2

我最近意识到使用Json.NETJil库序列化数组会导致错误的 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.NETJIL正常工作。提前致谢。

4

3 回答 3

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()小提琴):

[1,2,3,4,5]
[1,2,3,4,5]
于 2017-02-15T11:09:11.073 回答
0

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

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

这对我来说产生了预期的结果。

于 2017-02-15T10:51:36.970 回答
0

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

Console.WriteLine(JArray.FromObject(new[] {1,2,3,4,5}));
于 2017-02-15T10:55:15.967 回答