我最近意识到使用 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 正常工作。提前谢谢。
答案 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}));