我正在尝试将JSON字符串转换为C#对象,但是我得到的是空值
下面是我拥有的JSON字符串
[
{
"extraction_method": "stream",
"top": 0.0,
"left": 0.0,
"width": 559.0,
"height": 732.2100219726562,
"data": [[
{
"top": 0.0,
"left": 0.0,
"width": 0.0,
"height": 0.0,
"text": ""
},
{
"top": 96.36,
"left": 129.27,
"width": 102.97900390625,
"height": 6.550000190734863,
"text": "Sample"
},
{
"top": 96.35,
"left": 311.0,
"width": 27.188995361328125,
"height": 6.550000190734863,
"text": "PT"
},
{
"top": 96.35,
"left": 361.0,
"width": 41.248992919921875,
"height": 6.550000190734863,
"text": "HT"
},
{
"top": 96.36,
"left": 432.11,
"width": 28.141387939453125,
"height": 6.550000190734863,
"text": "RT."
},
{
"top": 96.36,
"left": 480.88,
"width": 29.64898681640625,
"height": 6.550000190734863,
"text": "LT."
},
{
"top": 96.36,
"left": 522.33,
"width": 36.660003662109375,
"height": 6.550000190734863,
"text": "MT"
}
], [
{
"top": 727.57,
"left": 75.24,
"width": 14.902000427246094,
"height": 4.619999885559082,
"text": "Tee"
},
{
"top": 0.0,
"left": 0.0,
"width": 0.0,
"height": 0.0,
"text": ""
},
{
"top": 727.57,
"left": 315.0,
"width": 14.00201416015625,
"height": 4.619999885559082,
"text": "IO."
},
{
"top": 727.59,
"left": 381.43,
"width": 16.6820068359375,
"height": 4.619999885559082,
"text": "1.10"
},
{
"top": 727.59,
"left": 434.53,
"width": 25.582000732421875,
"height": 4.619999885559082,
"text": "30.00"
},
{
"top": 727.59,
"left": 488.98,
"width": 21.131988525390625,
"height": 4.619999885559082,
"text": "8.00"
},
{
"top": 727.59,
"left": 534.53,
"width": 24.469959259033203,
"height": 4.619999885559082,
"text": "18.00"
}
]],
"spec_index": 0
}
]
还有JSON对象的类
public class JsonHelper
{
string top { get; set; }
string left { get; set; }
string width { get; set; }
string height { get; set; }
string text { get; set; }
}
public class RootObject
{
public string extraction_method { get; set; }
public double top { get; set; }
public double left { get; set; }
public double width { get; set; }
public double height { get; set; }
public List<List<JsonHelper>> data { get; set; }
public int spec_index { get; set; }
}
下面的代码用于获取对象
using (StreamReader r = new StreamReader(@"SamplePDF.json"))
{
string json = r.ReadToEnd();
List<RootObject> items =
JsonConvert.DeserializeObject<List<RootObject>>(json);
}
但是我得到的是,对象中的空值如下(如果未在下面显示图像,则在新选项卡中打开图像)
让我知道相同,谢谢
答案 0 :(得分:1)
无法访问以下属性,以下是更改。感谢@John。
public class JsonHelper
{
string top { get; set; }
string left { get; set; }
string width { get; set; }
string height { get; set; }
string text { get; set; }
}
答案 1 :(得分:0)
您可以为它们提供默认值,例如:
public int X { get; set; } = 0;
public string Y { get; set; } = "";
答案 2 :(得分:-1)
您的类看起来与JSON字符串的格式不匹配,请尝试
然后JSON.Net将匹配对象和JSON字符串
我已经尝试过您的示例JSON字符串,并且该对象是通过第4步创建的,
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public string extraction_method { get; set; }
public float top { get; set; }
public float left { get; set; }
public float width { get; set; }
public float height { get; set; }
public Datum[][] data { get; set; }
public int spec_index { get; set; }
}
public class Datum
{
public float top { get; set; }
public float left { get; set; }
public float width { get; set; }
public float height { get; set; }
public string text { get; set; }
}