最近由于项目需求,需要在C#端实现解析php发来的json(带数组)。找了很多资源、博客,都是需要先创建跟json字段对应的类,然后创建对象并传入解析。但我觉得这样特别麻烦,为什么不能像js或php那样方便的解析呢?不用创建对象,直接解析,取要用的字段。(不过传入对象进行解析这种方法,肯定也有适用场景)
后来我找到了Newtonsoft.Json,但是它好像有不同版本,按照网上的方法有些类型就是解析不了,方法也没有。而且有些如何解析数组也没有说明。。。后来终于找到了一个可以用的Newtonsoft.Json~
话不多说,直接上资源:http://download.csdn.net/detail/wu_zhongshan/9597572
string jsonStr="{\"Code\": 40000,\"errMsg\": \"\",\"keys\": [{\"g_id\": \"14\",\"type\": 1,\"key\": \"qwert\"}],\"orderSn\": \"20160803051229\",\"amount\": 2}";
JavaScriptObject json = (JavaScriptObject)JavaScriptConvert.DeserializeObject(jsonStr);
int Code = int.Parse(json["Code"].ToString());
JavaScriptArray keyJsonStr = (JavaScriptArray)json["keys"];
keyJsonStr.ForEach(x =>
{
JavaScriptObject jsonKey = (JavaScriptObject)x;
//可以采用存入字典类型
/*Dictionary<String, String> key = new Dictionary<String, String>();
key.Add("p_id", jsonKey["g_id"].ToString());
key.Add("type", jsonKey["type"].ToString());
key.Add("key", jsonKey["key"].ToString());*/
Console.Write("{{g_id:{0},type:{1},key:{2}}},", jsonKey["g_id"], jsonKey["type"], jsonKey["key"]);
});
使用注意:
如果出现类型无法解析,要添加对Newtonsoft.Json的引用:右击工程-添加引用