序列化数组会导致错误的JSON

时间:2017-02-15 10:33:24

标签: c# json serialization json.net jil

我最近意识到使用 Json.NET Jil 库序列化数组会导致错误的JSON对象!至少就https://jsonlint.com所说。例如

var serializer = // Json.NET_Serializer or Jil_Serializer;
var json = serializer.Serialize(new[] {1,2,3,4,5});
Console.WriteLine(json);

结果{ [1, 2, 3, 4, 5] }https://jsonlint.com(以及https://jsonformatter.curiousconcept.com/)表示错误

  

// jsonformatter中的错误消息:

     

期待字符串或},而不是[。

我认为

和预期结果是:

[1, 2, 3, 4, 5]

我错过了任何隐藏的观点吗?例如,Json.NET或Jil中是否有任何特殊设置来解决这个问题?

更新:请注意,问题不在于如何实现上述结果。但是关于如何使 JSON.NET JIL 正常工作。提前谢谢。

3 个答案:

答案 0 :(得分:1)

不知道你做错了什么,但使用以下代码使用JSON.Net:

using System;
using System.IO;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        var json = JsonConvert.SerializeObject(new[] {1,2,3,4,5});

        Console.WriteLine(json);

        JsonSerializer serializer = new JsonSerializer();

        using (StringWriter sw = new StringWriter())
        using (JsonWriter writer = new JsonTextWriter(sw))
        {
            serializer.Serialize(writer, new[] {1,2,3,4,5});

            Console.WriteLine(sw);
        }
    }
}

我使用JsonConvert.SerializeObject()JsonSerializer.Serialize()(小提琴here)获得了正确的输出:

[1,2,3,4,5]
[1,2,3,4,5]

答案 1 :(得分:0)

您可以尝试使用JavScriptSerializer,就像这样 -

new JavaScriptSerializer().Serialize(new[] {1,2,3,4,5});

这为我产生了预期的结果。

答案 2 :(得分:0)

使用JArray.FromObject()对我来说很好用:

Console.WriteLine(JArray.FromObject(new[] {1,2,3,4,5}));