我只是使用XmlWriter创建了一些XML,以便在HTTP响应中发回。如何创建JSON字符串?我猜你会使用stringbuilder来构建JSON字符串,然后将响应格式化为JSON?


当前回答

看看http://www.codeplex.com/json/上的json-net。aspx项目。为什么要重新发明轮子?

其他回答

如果你想避免创建一个类和创建JSON,那么创建一个动态对象和序列化对象。

            dynamic data = new ExpandoObject();
            data.name = "kushal";
            data.isActive = true;

            // convert to JSON
            string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);

读取JSON并像这样反序列化:

            // convert back to Object
            dynamic output = Newtonsoft.Json.JsonConvert.DeserializeObject(json);

            // read a particular value:
            output.name.Value

ExpandoObject来自System。动态名称空间。

包括:

使用System.Text.Json;

然后像这样序列化你的object_to_serialize: JsonSerializer.Serialize (object_to_serialize)

编码使用

JSON数组的简单对象EncodeJsObjectArray()

public class dummyObject
{
    public string fake { get; set; }
    public int id { get; set; }

    public dummyObject()
    {
        fake = "dummy";
        id = 5;
    }

    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append('[');
        sb.Append(id);
        sb.Append(',');
        sb.Append(JSONEncoders.EncodeJsString(fake));
        sb.Append(']');

        return sb.ToString();
    }
}

dummyObject[] dummys = new dummyObject[2];
dummys[0] = new dummyObject();
dummys[1] = new dummyObject();

dummys[0].fake = "mike";
dummys[0].id = 29;

string result = JSONEncoders.EncodeJsObjectArray(dummys);

论点: [29,“迈克”[5],“笨蛋”]

漂亮的用法

Pretty print JSON数组PrettyPrintJson()字符串扩展方法

string input = "[14,4,[14,\"data\"],[[5,\"10.186.122.15\"],[6,\"10.186.122.16\"]]]";
string result = input.PrettyPrintJson();

结果是:

[
   14,
   4,
   [
      14,
      "data"
   ],
   [
      [
         5,
         "10.186.122.15"
      ],
      [
         6,
         "10.186.122.16"
      ]
   ]
]

如果你不能或不想使用两个内置的JSON序列化器(JavaScriptSerializer和DataContractJsonSerializer),你可以尝试JsonExSerializer库——我在许多项目中使用它,工作得很好。

简单使用Newtonsoft。Json和Newtonsoft.Json.Linq库。

        //Create my object
        var myData = new
        {
            Host = @"sftp.myhost.gr",
            UserName = "my_username",
            Password = "my_password",
            SourceDir = "/export/zip/mypath/",
            FileName = "my_file.zip"
        };

        //Tranform it to Json object
        string jsonData = JsonConvert.SerializeObject(myData);

        //Print the Json object
        Console.WriteLine(jsonData);

        //Parse the json object
        JObject jsonObject = JObject.Parse(jsonData);

        //Print the parsed Json object
        Console.WriteLine((string)jsonObject["Host"]);
        Console.WriteLine((string)jsonObject["UserName"]);
        Console.WriteLine((string)jsonObject["Password"]);
        Console.WriteLine((string)jsonObject["SourceDir"]);
        Console.WriteLine((string)jsonObject["FileName"]);