如何使用DataContractJsonSerializer解析Json字符串中數組的元素? 語法是:使用DataContractJsonSerializer將數組解析爲Json字符串WP7
{
"array":[
{
"elementsProperies":"SomeLiteral"
}
]
}
如何使用DataContractJsonSerializer解析Json字符串中數組的元素? 語法是:使用DataContractJsonSerializer將數組解析爲Json字符串WP7
{
"array":[
{
"elementsProperies":"SomeLiteral"
}
]
}
你未必「解析」使用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;
}
我建議使用Json.net。
在這裏面,你只需調用:
var jsonObj = JObject.Parse(yourjsonstring);
var elPropertyValue = (string)jsonObj.SelectToken("array[0].elementsProperies");
得到"SomeLiteral"
。
你也可以看看其他json反序列化器,如json.net – earthling 2012-01-27 19:43:14
謝謝一堆= D 雖然我已經找到了「解決方案」。 (和idd,我使用的是反序列化方法= 3)我用阻滯頭做了什麼,既給出了存儲數據的List,也給出了我想要存儲[DataContract]前綴的元素。 (我剛從元素開始,但後來才決定使用List來存儲數據,並忘記了[DataContract]。 對不起,但忘記刪除這個問題了(應該還是應該保留它以後的參考? ) – GeekPeek 2012-01-30 13:01:40