一些背景知识:我的json数据来自查询mysql数据库的php脚本。我有一个命令结果的类,比如成功或失败。我有另一个类,它将包含查询的实际结果。
if (o is string)
{
return "'" + o + "'";
}
if (o is bool)
{
bool value = (bool) o;
return value ? "1" : "0";
}
// Are you sure you want this? I would throw an exception if you
// don't know what to do with the value...
return "'" + o + "'";
我想我应该能够遍历jsonResults结果arraylist来填充一个新的HeroDetails,但我似乎无法找到它。
示例json数据
public class jsonResults {
public int success { get; set; }
public string message { get; set; }
public ArrayList resultArray { get; set; }
}
public class HeroDetails {
public int id { get; set; }
public string name { get; set; }
}
此代码让我可以访问成功和消息,但我没有找到任何方法将数组结果放入我的列表中。
{
"success": 1,
"message": "Data Available!",
"resultArray":[
{ "id": "26", "name": "Hero1" },
{ "id": "13", "name": "Hero2" },
{ "id": "1", "name": "Hero3" },
{ "id": "18", "name": "Hero4" }
]
}
答案 0 :(得分:3)
public class ResultArray
{
public string id { get; set; }
public string name { get; set; }
}
public class RootObject
{
public int success { get; set; }
public string message { get; set; }
public List<T> resultArray { get; set; }
}
答案 1 :(得分:2)
您的JSON响应可以包含通用数据,因此您需要一个通用结果类。
public class jsonResults<T> {
public int success { get; set; }
public string message { get; set; }
public List<T> resultArray { get; set; }
}
此外,您必须知道您希望反序列化它的类型是什么类型。
jsonResults<HeroDetails> r = JsonConvert.DeserializeObject<jsonResults<HeroDetails>>(json);