用对象生成JSON串

用对象组建JSON数据可很好地避免拼接字符串的困扰,如符号或多或少造成整个字符串不是合法的JSON串。 下面以生成如下JSON串为例介绍代码示例:

{

    "a1": "1",
    "a2": "2",
    "a3": [
        {
            "b1": "3",
            "b2": "4"
        },
        {
            "b1": "5",
            "b2": "6"
        }
    ],
    "a4": [
        "7",
        "8"
    ]

}

C#版

下载源代码:http://downloads.cmcloud.cn/kis/kis_src/code/Json_CSharp_VS2010.rar

生成JSON方法1:用JavaScriptSerializer(微软自带的)

引用.net组件:System.Web.Extensions

using System.Web.Script.Serialization;

using System.Collections;

private string createJsonString1() {

    String sJson = "";
    Hashtable htroot = new Hashtable();
    List<Hashtable> lst = null;
    List<String> lststr = null;
    Hashtable ht = null;

    htroot.Add("a1", "1");
    htroot.Add("a2", "2");

    lst = new List<Hashtable>();
    ht = new Hashtable();
    ht.Add("b1", "3");
    ht.Add("b2", "4");
    lst.Add(ht);
    ht = new Hashtable();
    ht.Add("b1", "5");
    ht.Add("b2", "6");
    lst.Add(ht);
    htroot.Add("a3", lst);

    lststr = new List<String>();
    lststr.Add("7");
    lststr.Add("8");
    htroot.Add("a4", lststr);

    JavaScriptSerializer jss = new JavaScriptSerializer();
    sJson = jss.Serialize(htroot);

    return sJson;

}

生成JSON方法2:用Newtonsoft.Json

目标框架:.NET Framework 4及以上

引用组件:Newtonsoft.Json.dll

下载地址http://downloads.cmcloud.cn/kis/kis_src/Newtonsoft.Json.rar

using Newtonsoft.Json;

using System.IO;

private string createJsonString2() {

    String sJson = "";
    StringWriter sw = new StringWriter();
    JsonWriter writer = new JsonTextWriter(sw);

    writer.WriteStartObject();
        writer.WritePropertyName("a1");
        writer.WriteValue("1");

        writer.WritePropertyName("a2");
        writer.WriteValue("2");

        writer.WritePropertyName("a3");
        writer.WriteStartArray();
            writer.WriteStartObject();
                writer.WritePropertyName("b1");
                writer.WriteValue("3");
                writer.WritePropertyName("b2");
                writer.WriteValue("4");
            writer.WriteEndObject();

            writer.WriteStartObject();
                writer.WritePropertyName("b1");
                writer.WriteValue("5");
                writer.WritePropertyName("b2");
                writer.WriteValue("6");
            writer.WriteEndObject();
        writer.WriteEndArray();

        writer.WritePropertyName("a4");
        writer.WriteStartArray();
            writer.WriteValue("7");
            writer.WriteValue("8");
        writer.WriteEndArray();
    writer.WriteEndObject();

    writer.Flush();

    sJson = sw.GetStringBuilder().ToString();

    return sJson;

}