回答

2

你未必「解析」使用DataContractJsonSerializer JSON字符串,但你可以反序列化到一個對象或使用該對象的名單。如果這是你所追求的,這裏有一個簡單的方法將其反序列化爲對象列表。

首先你需要有你打算反序列化到對象類型:

[DataContract] 
public class MyElement 
{ 
    [DataMember(Name="elementsProperties")] // this must match the json property name 
    public string ElementsProperties { get; set; } 
} 

然後,您可以使用類似下面的方法來你的JSON字符串反序列化對象的列表

private List<MyElement> ReadToObject(string json) 
{ 
    var deserializedElements = new List<MyElement>(); 
    using(var ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) 
    { 
     var ser = new DataContractJsonSerializer(deserializedElements.GetType()); 
     deserializedElements = ser.ReadObject(ms) as List<MyElement>; 
    } 
    return deserializedUsers; 
} 
+0

你也可以看看其他json反序列化器,如json.net – earthling 2012-01-27 19:43:14

+0

謝謝一堆= D 雖然我已經找到了「解決方案」。 (和idd,我使用的是反序列化方法= 3)我用阻滯頭做了什麼,既給出了存儲數據的List,也給出了我想要存儲[DataContract]前綴的元素。 (我剛從元素開始,但後來才決定使用List來存儲數據,並忘記了[DataContract]。 對不起,但忘記刪除這個問題了(應該還是應該保留它以後的參考? ) – GeekPeek 2012-01-30 13:01:40

0

我建議使用Json.net

在這裏面,你只需調用:

var jsonObj = JObject.Parse(yourjsonstring); 

var elPropertyValue = (string)jsonObj.SelectToken("array[0].elementsProperies"); 

得到"SomeLiteral"