我最近意识到, 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});
为我产生预期结果。