2017-02-15 100 views
1

最近我意識到,序列化陣列,Json.NET和的Jil庫都,導致了錯誤的JSON對象!至少就https://jsonlint.com說。例如序列化陣列導致錯誤的JSON

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或吉爾來解決這個問題的任何特殊設置?

UPDATE:請注意,問題不在於如何達到上述結果。但關於如何得到JSON.NETJIL工作的權利。提前致謝。

+0

如何你打印出你的JSON嗎? –

+0

@RobbyCornelissen控制檯寫作,或設置斷點,或在數據庫中保存... –

+0

您是否嘗試過加入您的數組對象到一個變量1日? –

回答

0

你可以嘗試使用JavScriptSerializer,像這樣 -

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

產生預期的結果對我來說。

0

使用JArray.FromObject()爲我工作得很好:

Console.WriteLine(JArray.FromObject(new[] {1,2,3,4,5})); 
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]