序列化阵列结果错误的JSON



我最近意识到, json.net and jil libraries serialise数组序列化,结果是错误的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] } as https://jsonlint.com(以及https://jsonformatter.curiousconcept.com/)说,是错误的

//jsonformatter中的错误消息:

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

和我认为的预期结果是:

[1, 2, 3, 4, 5]

我错过了任何隐藏点吗?例如,json.net中是否有任何特殊设置可以解决此问题?

更新:请注意,问题不是如何实现上述结果。但这是关于如何获得 JSON.NET JIL 正确工作。预先感谢。

不知道您在做什么错,但是使用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]

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

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

您可以尝试使用JavScriptSerializer,例如So -

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

为我产生预期结果。

相关内容

  • 没有找到相关文章

最新更新