[英]Deserialize Json into a C# Object
我知道這個主題之前已經發布過。 但我試着跟着他們。 但是,我的結果仍然沒有顯示出來。 我將不勝感激任何可能的幫助。 提前致謝。 :) 我收到以下錯誤: System.NullReferenceException: '未將對象引用設置為對象的實例。'
我正在嘗試將 JSON 對象反序列化為 ac# 對象以輸出屬性分數。
我從 json =toneAnalyzer.Tone(toneInput) 的 Json 輸出:
{
"document_tone" : {
"tones" :
[
{
"score" : 0.70123,
"tone_id" : "tentative",
"tone_name" : "Tentative"
}
]
}
}
我已經執行了以下代碼:
var json = toneAnalyzer.Tone(toneInput); // this is my json source
DocTone myResult = new DocTone();
myResult = JsonConvert.DeserializeObject<DocTone>(json.Response);
foreach (var myTone in myResult.tones)
{
Console.Write(myTone.Score);
Console.ReadKey();
}
// Console.WriteLine(myResult);
// Console.WriteLine(result.Response);
}
public class MyTone1
{
[JsonProperty("score")]
public double Score { get; set; }
[JsonProperty("tone_id")]
public string Tone_Id { get; set; }
[JsonProperty("tone_name")]
public string Tone_Name { get; set; }
}
public class DocTone
{
[JsonProperty("tones")]
public List<MyTone1> tones { get; set; }
}
您要反序列化的對象有一個小錯誤。
您的根對象不是DocTone
,而是實際上具有包含DocTone
對象(通過document_tone
元素)的屬性的對象。
定義一個根對象(隨便你怎么稱呼它),然后反序列化為:
public class RootObject
{
[JsonProperty("document_tone")]
public DocTone DocTone { get; set; }
}
反序列化然后通過DocTone
屬性訪問:
RootObject myResult;
myResult = JsonConvert.DeserializeObject<RootObject>(json.Response);
foreach (var myTone in myResult.DocTone.tones)
...
您遇到NullReferencException
的原因是當您反序列化為DocTone
對象時, tones
屬性為NULL
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.