Site.CodeReference3的历史版本

隐藏细微更改 - 以实际显示效果显示

2016年-06月-15日219.133.170.76 -
将 25 行由:
可以参考使用JSON在线工具 http://www.kjson.com/
更新为以下内容:
可以参考使用JSON在线工具(如 http://www.kjson.com/ )进行解析。
2016年-06月-15日219.133.170.76 -
在 24-25 行中增加以下内容:

可以参考使用JSON在线工具 http://www.kjson.com/
2016年-04月-15日127.0.0.1 -
在 1-80 行中增加以下内容:
!解析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);
}