如何反序列化特定的JSON字符串

时间:2013-05-31 11:33:05

标签: c# json deserialization

我一直试图使用JavaScriptSerializer类反序列化特定的JSON字符串一天,但没有成功。 我在这里已经阅读了很多帖子,但是找不到一个在设计上与我需要使用的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; }
}

1 个答案:

答案 0 :(得分: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();