[英]JSON.Net, JsonConvert.DeserializeObject - problems with deserialization
當我嘗試使用JSON.Net反序列化我的JSON時,它為我提供了JSON數組的無效值。
我有簡單的JSON:
[
{
"PhaseName": "Start",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "In Progress",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "Finish",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
}
]
我的代碼中有一個通訊員:
public class Advices
{
public string PhaseName { get; set; }
public List<string> AdvicesList { get; set; }
}
並且是一個表示Advices對象數組的可靠代碼:
public class MyAdvices
{
private Advices[] MyAdvicesArrays;
....
所以,當我試圖反序列化我的JSON時:
MyAdvicesArrays= JsonConvert.DeserializeObject<Advices[]>(sMyJSON));
JSON.Net使用正確的值填充MyAdvicesArrays數組中每個對象的“Phase Name”屬性,但每個對象的Advices數組無效:如果在運行時檢查它們,則“無法計算表達式”。 我不明白。 我做錯了什么?
根據實體,您的json
無效。
在您的類型更改AdvicesList
到Advices
。
public List<string> AdvicesList { get; set; }
將其更改為
public List<string> Advices { get; set; }
不,你是JSON是不正確的,因為你是Class。
首先將您的JSON更改為:
{
phases:[
{
"PhaseName": "Start",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "In Progress",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "Finish",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
}
]
}
在沒有正確聲明JSON對象之前請注意。 您還需要一個數組屬性。
現在你需要兩個課程:
public class AnythinYouWant{
public List<Phase> Phases{get;set;}
}
public class Phase{
public string PhaseName{get;set;}
public List<string> Advices{get;set;}
}
注意第一個類是如何用於頂級JSON對象的。 這個名字可以是你想要的任何名字。 但任何財產都需要與名稱相匹配。
我所做的就是改變Advices
類的定義:
public class Advice
{
public string PhaseName { get; set; }
public List<string> Advices { get; set; }
}
我改變了類的名稱,只是Advice
和AdvicesList
財產Advices
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.