字符串序列化中的NewtonSoft JSON

时间:2015-01-08 18:19:53

标签: c# json json.net

给定一个JSON字符串列表,可以将List转换为JSON,而不会让序列化程序认为JSON字符串是普通的旧字符串。使用NewtonSoft .NET

使用:

List<string> list = { "{"foo": "bar"}", "[ 1, 2, 3]", "{"biz": "baz", "fiz": ["a", "b", "c"]}";
String json = JsonConvert.SerializeObject(list, Formatting.Indented);

目前我从json获得了类似的内容:

"[ \n\r "{"foo": "bar"}", \n\r  "[ 1, 2, 3]", ...]"

序列化程序将json字符串视为具有特殊格式的任何其他字符串。 我想要更像这样的东西:

"[ 
    {
        "foo": "bar"
    },
    [
         1,
         2,
         3
    ], 
    {
         "biz": "baz", 
         "fiz": [
                    "a", 
                    "b", 
                    "c"
                ]
    }
]"

具有适当缩进的东西。

2 个答案:

答案 0 :(得分:1)

这里的想法是使用Json.NET API自己构建JSON,而不是手动编写。为此,您可以使用JToken存储原始的json字符串,然后将结果包装在JArray中。然后,您可以使用ToString方法在完成后将所有内容序列化为JSON。

var finalString = new JArray(list.Select(JToken.Parse).ToArray()).ToString();

答案 1 :(得分:0)

使用此:

JsonSerializer serializer = new JsonSerializer();
serializer.Formatting = Formatting.Indented;