!解析JSON串
直接按字符串运算解析太容易出错了,这里介绍一种比较好的方式,即通过先反序列化JSON串,再读取Json串中数据。
下面以解析如下JSON串为例介绍代码示例:
{
"a1": "1",
"a2": "2",
"a3": [
{
"b1": "3",
"b2": "4"
},
{
"b1": "5",
"b2": "6"
}
],
"a4": [
"7",
"8"
]
}
!!%second%C#版
下载源代码:http://downloads.cmcloud.cn/kis/kis_src/code/Json_CSharp_VS2010.rar
!!%second%读取JSON方法1:用JavaScriptSerializer(微软自带的)
'''引用组件:System.Web.Extensions'''
'''using System.Web.Script.Serialization'''
private void ReadJson1()
{
string sJson = "{\"a1\":\"1\",\"a2\":\"2\",\"a3\":[{\"b1\":\"3\",\"b2\":\"4\"},{\"b1\":\"5\",\"b2\":\"6\"}],\"a4\":[\"7\",\"8\"]}";
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> json = (Dictionary<string, object>)serializer.DeserializeObject(sJson);
object value;
if (json.TryGetValue("a1", out value))
MessageBox.Show(value.ToString()); // 输出:1
if (json.TryGetValue("a2", out value))
MessageBox.Show(value.ToString()); // 输出:2
}
!!%second%读取JSON方法2:用Newtonsoft.Json
'''目标框架:.NET Framework 4及以上'''
'''引用组件:Newtonsoft.Json.dll'''
下载地址http://downloads.cmcloud.cn/kis/kis_src/Newtonsoft.Json.rar
'''using Newtonsoft.Json.Linq;'''
private void ReadJson2()
{
string sJson = "{\"a1\":\"1\",\"a2\":\"2\",\"a3\":[{\"b1\":\"3\",\"b2\":\"4\"},{\"b1\":\"5\",\"b2\":\"6\"}],\"a4\":[\"7\",\"8\"]}";
string s = "";
//反序列化
JObject O = JsonConvert.DeserializeObject(sJson) as JObject;
//使用索引器访问
s += "a1=" + O["a1"] + "\n";
s += "a2=" + O["a2"] + "\n";
s += "a3中的元素总数=" + O["a3"].Count() + "\n";
s += "a3[0]的b1=" + O["a3"][0]["b1"] + "\n";
s += "a3[0]的b2=" + O["a3"][0]["b2"] + "\n";
s += "a3[1]的b1=" + O["a3"][1]["b1"] + "\n";
s += "a3[1]的b2=" + O["a3"][1]["b2"] + "\n";
s += "a4中的元素总数=" + O["a4"].Count() + "\n";
s += "a4[0]=" + O["a4"][0] + "\n";
s += "a4[1]=" + O["a4"][1] + "\n";
MessageBox.Show(s);
}