![](/img/trans.png)
[英]Windows phone 8 C#: How to parse JSON Array of Array of objects
[英]How to parse Json to class in c# (Windows phone 8)?
也許有人知道更好的版本可以解決我的問題?
有下一個json:
[
{
"name":{
"IsEmpty":false,
"X":-10.5,
"Y":2.47
},
"password":"pas"
},
{
"name":{
"IsEmpty":false,
"X":-10.5,
"Y":2.47
},
"password":"pas"
},
{
"name":{
"IsEmpty":false,
"X":-10.5,
"Y":2.47
},
"password":"pas"
}
]
我想將json中的元素解析到我的類中:
public class Name
{
public bool IsEmpty { get; set; }
public double X { get; set; }
public double Y { get; set; }
}
public class RootObject
{
public List<Name> name { get; set; }
public string password { get; set; }
}
......
dynamic res = JsonConvert.DeserializeObject<RootObject[]>(result1);
變量result1是我的json對象。
還有我所擁有的:
無法將當前JSON對象(例如{“ name”:“ value”})反序列化為類型'client_app.MainPage + RootObject []',因為該類型需要JSON數組(例如[1,2,3])才能正確反序列化。 要解決此錯誤,可以將JSON更改為JSON數組(例如[1,2,3]),也可以更改反序列化類型,使其成為普通的.NET類型(例如,不像整數這樣的原始類型,也不像這樣的集合類型。數組或列表),可以從JSON對象反序列化。 還可以將JsonObjectAttribute添加到類型中,以強制其從JSON對象反序列化。 路徑“名稱”,第1行,位置8。
問題出在您的JSon字符串和根對象之間的映射上。 我認為這是導致問題的原因:
"IsEmpty":false
反序列化對象時,JSon轉換器會等待IsEmpty屬性的類型為bool 。 情況並非如此,因為其類型為List
因此,您的根類應如下所示:
public class RootObject
{
public Name name { get; set; }
public string password { get; set; }
}
請嘗試這樣:
var res = JsonConvert.DeserializeObject<List<RootObject>>(result1);
這是您需要反序列化的類集
public class Name
{
public bool IsEmpty { get; set; }
public double X { get; set; }
public double Y { get; set; }
}
public class Item
{
public Name name { get; set; }
public string password { get; set; }
}
然后
var items = Newtonsoft.Json.JsonConvert.DeserializeObject<Item[]>(json);
var ds = new DataContractJsonSerializer(typeof(RootObject[]));
var msnew = new MemoryStream(Encoding.UTF8.GetBytes(MyJsonString));
RootObject[] items = (RootObject[])ds.ReadObject(msnew);
這解決了我的問題
您的Name
類具有IsEmpty
作為bools
列表的屬性。
所以您傑森應該是:
[
{
"name": {
"IsEmpty": [
false
],
"X": -10.5,
"Y": 2.47
},
"password": "pas"
},
{
"name": {
"IsEmpty": [
false
],
"X": -10.5,
"Y": 2.47
},
"password": "pas"
},
{
"name": {
"IsEmpty": [
false
],
"X": -10.5,
"Y": 2.47
},
"password": "pas"
}
]
注意IsEmpty
值上的方括號,表示該值在集合中。 如果要分配多個值,則可以使用以下方法添加更多值:
"IsEmpty": [ false, true ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.