如何在Xamarin中解析来自API的JSON响应



我是Xamarin的新手,正在做我的第一个项目。我遇到了一个问题,需要登录用户并从响应中检索详细信息。这就是我的JSON请求的样子:

JSON请求:

'{
"key": "value",
"key": "value",
"JsonReq": {
"JHeader": {
"key": "value",
"key": "value",
"key": "value"
},
"JMetaData": {},
"JData": {
"key": "value",
"key": "value"
}
},
"key": "value"}'

请求JSON用单引号括起来

我已经在Xamarin中编写了一个模型类(使用在线JSON到C-sharp工具(,我可以成功地向API发送POST请求并获得正确的响应。JSON响应看起来像这样:

JSON响应:

{
"JHeader": {
"key": IntegerValue,
"key": "value"
},
r "JMetaData": {
"Headings": [
["list1", "listItem", "ListItem"],
["list2", "listItem", "ListItem"],
ttttttttttttttt["list3",ttttt "listItem",ttt "ListItem"]
]
},
r "JData": [
r ["listItem", "listItem", "ListItem"]
]}

响应JSON不包含在单引号中但是有这些\t和\

现在我想解析这个响应并从中提取值。但由于请求和响应之间存在一些差异,我无法对两者使用相同的模型类。例如;JSonReq";作为响应,但请求中存在一个"JMetaData";是响应中的列表类型,但在请求中具有键值对。

有什么想法可以解析这个响应吗?

为您的响应生成一个模型,如

public class JHeader    {
public string key { get; set; } 
}
public class JMetaData    {
public List<List<string>> Headings { get; set; } 
}
public class Root    {
public JHeader JHeader { get; set; } 
public JMetaData JMetaData { get; set; } 
public List<List<string>> JData { get; set; } 
}

然后使用Newtonsoft 进行解析

var data = JsonConvert.DeserializeObject<Root>(json);

我想我明白了。我想也许我不能更改类名,因为它们被用来生成json。我只是觉得事实并非如此,我只需要保持变量名与请求和响应中的变量名相同,而不需要类名。愚蠢的我。

最新更新