下面是我的Json字符串
Json String
{
"RestResponse": {
"messages": [
"Country found matching code [IN]."
],
"result": {
"name": "India",
"alpha2_code": "IN",
"alpha3_code": "IND"
}
}
}
我在Xamarin中创建了这些类,但是没有将Json解析为对象,请指导。
public class Country
{
[JsonProperty(PropertyName = "RestResponse")]
public List<myRestResponse> RestResponse { get; set; }
}
public class myRestResponse
{
[JsonProperty(PropertyName = "messages")]
public List<string> messages { get; set; }
[JsonProperty(PropertyName = "result")]
public List<Result> result { get; set; }
}
public class Result
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "alpha2_code")]
public string alpha2_code { get; set; }
[JsonProperty(PropertyName = "alpha3_code")]
public string alpha3_code { get; set; }
}
我正在使用下面的代码进行反序列化
var content = await response.Content.ReadAsStringAsync();
Country country = JsonConvert.DeserializeObject<Country>(content);
答案 0 :(得分:2)
使用http://json2csharp.com/等工具有助于定义您的课程。
这给出了
的结果public class Result
{
public string name { get; set; }
public string alpha2_code { get; set; }
public string alpha3_code { get; set; }
}
public class RestResponse
{
public List<string> messages { get; set; }
public Result result { get; set; }
}
public class Country
{
public RestResponse RestResponse { get; set; }
}
因此,您可以看到您的Country类(Root对象)不应该有列表。
并且RestResponse应该只包含一个Result对象,而不是列表。
答案 1 :(得分:0)
根据您的类结构,您的JSON格式不正确。 JSON有两个问题。根据您的类结构,您正在尝试DeSerialize,property'RestResponse'是一个数组,但在您的JSON中它不是。另一个是属性'result',它又是一个数组,但在你的JSON中它不是。根据您的JSON格式更新您的类结构,或者请尝试以下JSON,
{
"RestResponse": [
{
"messages": [ "Country found matching code [IN]." ],
"result": [
{
"name": "India",
"alpha2_code": "IN",
"alpha3_code": "IND"
}
]
}
]
}
如果您想更新课程结构,请复制以下课程,
public class Result
{
public string name { get; set; }
public string alpha2_code { get; set; }
public string alpha3_code { get; set; }
}
public class RestResponse
{
public List<string> messages { get; set; }
public Result result { get; set; }
}
public class RootObject
{
public RestResponse RestResponse { get; set; }
}
答案 2 :(得分:0)