将jsonstring转换为对象c#
问题描述:
我想从我返回的api jsonstring中获取数据。将jsonstring转换为对象c#
我的结果字符串看起来像
[
{"Id":12,"name":"testname","type":"testtype"}
{"Id":12,"name":"testname","type":"testtype"}
{"Id":12,"name":"testname","type":"testtype"}
]
我怎样才能提取此数据到C#对象
我只能做到这一点的人
var obj = JObject.Parse(result);
var ID = (int)obj["Id"];
var Name = (String)obj["name"];
var type = (String)obj["type"];
User u = new User(ID,Name,Type);
答
您的字符串不是有效的JSON,所以使其有效JSON是快速处理它的第一步。最容易做的事情是让一个JSON阵列:
string jsonArray = "["
+ string.Join(", ", json.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
+ "]";
从那时起,它是简单的(见我的相关答案:Easiest way to parse JSON response):
var result = JsonConvert.DeserializeObject<User[]>(jsonArray);
另一种选择是自己分裂线,并手动解析并添加项目到列表。
+0
的数组,但你如何循环结果?所以我可以把它们放在我的对象中 –
+0
在结果上使用'foreach'。 –
答
结果是JSON数组..所以循环和解析
list<User> userList = new list<User>();
for(int i=0 ; i <result.length; i++)
{
var obj = JObject.Parse(result[i]);
var ID = (int)obj["Id"];
var Name = (String)obj["name"];
var type = (String)obj["type"];
User u = new User(ID,Name,Type); //create User
userList.add(u); //Add to list
}
你的“结果字符串”不是有效的JSON。至少不是有效的对象或集合,而是一个接一个地存在三个对象。我不认为Json解析器将能够处理这种响应。 – madd0
你**结果**是json –