我知道此主题以前已发布。但是我尝试跟随他们。但是,我的结果仍然没有显示。我将不胜感激。提前致谢。 :)我收到以下错误:System.NullReferenceException:'对象引用未设置为对象的实例。'
我正在尝试将JSON对象反序列化为c#对象以输出属性得分。
我的JSON =的我的Json输出= toneAnalyzer.Tone(toneInput):
{
"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; }
}
答案 0 :(得分:2)
您要反序列化的对象有一个小错误。
您的根对象不是-onbuild
,而是实际上具有包含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
。