我对 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\"],
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\"list3\",\t\t\t\t\t \"listItem\",\t\t\t \"ListItem\"]
]
},
\r \"JData\": [
\r [\"listItem\", \"listItem\", \"ListItem\"]
]}
响应 JSON 没有用单引号括起来。 但是有这些 \r \t 和 \
现在我想解析这个响应并从中提取值。但是由于请求和响应之间存在一些差异,我无法对两者使用相同的模型类。例如,响应中没有“JSonReq”,但请求中有一个。 “JMetaData”是响应中的 list 类型,但在请求中具有键值对。
任何想法如何解析此响应?
答案 0 :(得分:0)
为你的回复生成一个模型,就像这样
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);
答案 1 :(得分:0)
我想我明白了。我在想也许我无法更改类名,因为它们被用来生成 json。只是认为情况并非如此,我只需要保持与请求和响应中的变量名相同,而不是类名。傻我。