2013-05-31 93 views
1

我一直試圖反序列化一個特定的JSON字符串使用JavaScriptSerializer類的一天,現在沒有成功。 我讀過這裏的公平的幾個帖子,但無法找到一個解決JSON字符串類似的設計,我需要使用,所以我問我自己的。如何反序列化特定的JSON字符串

我需要反序列化的字符串如下:

["SomeName",[["alpha","bravo"],[1,6]],[["John","Bob","Paul","Ringo"],[1,2,1,8]]] 

以爲這個類可以解決它,但我顯然錯了:

[Serializable] 
internal class OuterDeserializedObj 
{ 
    [Serializable] 
    internal class InnerDeserializedObj 
    { 
     public string Name { get; set; } 
     public List<List<string>> Array1 { get; set; } 
     public List<List<string>> Array2 { get; set; } 
    } 

    public List<InnerDeserializedObj> innerObj { get; set; } 
} 
+0

你可以張貼整個JSON?似乎JSON無效。 – aiapatag

+0

我現在已經添加了一個完整的JSON副本+來自提供者的粘貼 – Sk93

+3

該JSON字符串的作者一定是真的醉了 – jgauffin

回答

1

您的JSON只是一個數組(對象數組數組的數組),因此我能想到的唯一方法是在c#中創建一個類似的結構。

(使用Json.Net

string json = @"[""SomeName"",[[""alpha"",""bravo""],[1,6]],[[""John"",""Bob"",""Paul"",""Ringo""],[1,2,1,8]]]"; 
var arr = JArray.Parse(json); 

string name = (string)arr.OfType<JValue>().First(); 
var arrays = arr.OfType<JArray>() 
       .Select(x => x.Select(y=>y.Select(z=>(string)z) 
              .ToList()) 
           .ToList()) 
       .ToList(); 
+0

這確實工作得很好,但就像你說的,需要使用Json.Net。我希望不必將此作爲要求添加,但如果沒有人能解決這個問題,我會將其標記爲答案。謝謝 – Sk93