C#解析JSON方法
2688 ワード
Linq to JSONを行う前に、まずLinq to JSONを操作するためのクラスについて知る.
クラス名
説明
JObject
JSONオブジェクト操作用
JArray
JSON配列の操作に使用
JValue
配列内の値を表す
JProperty
オブジェクトのプロパティを「key/value」形式で表します.
JToken
Linq to JSONクエリの結果を格納するために使用
方法1:
JObject遍歴:
引用ネーミングスペース:using Newtonsoft.Json.Linq;
このような遍歴は一般的には属性名が分からない場合に用いられ,属性名が分かれば直接_jObject["ID"].ToString()、または_jObject["ID"].Value()でいいです.
JSONオブジェクトを作成するには:
JSON配列の作成:
json形式:
クラス名
説明
JObject
JSONオブジェクト操作用
JArray
JSON配列の操作に使用
JValue
配列内の値を表す
JProperty
オブジェクトのプロパティを「key/value」形式で表します.
JToken
Linq to JSONクエリの結果を格納するために使用
方法1:
object Data = null;
Dictionary Dic = new Dictionary();
MatchCollection Match = System.Text.RegularExpressions.Regex.Matches(json, @"""(.+?)"": {0,1}(\[[\s\S]+?\]|null|"".+?""|-{0,1}\d*)");// JSON
foreach (Match item in Match)
{
try
{
if (item.Groups[2].ToString().ToLower() == "null") Data = null;// null( ), null
else Data = item.Groups[2].ToString(); // 、 ,
Dic.Add(item.Groups[1].ToString(), Data);
}
catch { }
}
JObject遍歴:
引用ネーミングスペース:using Newtonsoft.Json.Linq;
Dictionary dic = new Dictionary();
var p = Newtonsoft.Json.Linq.JObject.Parse(json);
foreach (Newtonsoft.Json.Linq.JToken child in p.Children())
{
var property1 = child as Newtonsoft.Json.Linq.JProperty;
dic.Add(property1.Name.ToString(), property1.Value.ToString());
}
このような遍歴は一般的には属性名が分からない場合に用いられ,属性名が分かれば直接_jObject["ID"].ToString()、または_jObject["ID"].Value()でいいです.
Newtonsoft.Json.Linq.JObject _jObject = Newtonsoft.Json.Linq.JObject.Parse("{'Goods':{'GoodsId':'111',GoodsName:'Adidas'},'Mark':'2589'}");
var _value = _jObject["Goods"]["GoodsId"].ToString(); // : 111
JSONオブジェクトを作成するには:
Newtonsoft.Json.Linq.JObject staff = new Newtonsoft.Json.Linq.JObject();
staff.Add(new Newtonsoft.Json.Linq.JProperty("Name", "Jack"));
staff.Add(new JProperty("Age", 33));
staff.Add(new JProperty("Department", "Personnel Department"));
staff.Add(new JProperty("Leader", new JObject(new Newtonsoft.Json.Linq.JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
JSON配列の作成:
Newtonsoft.Json.Linq.JArray arr = new Newtonsoft.Json.Linq.JArray();
arr.Add(new JValue(1));
arr.Add(new JValue(2));
arr.Add(new JValue(3));
json形式:
object jss = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
string js = jss.ToString();