C#解析JSON方法

2688 ワード

Linq to JSONを行う前に、まずLinq to 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();