【发布时间】:2017-01-10 20:13:53
【问题描述】:
我正在使用一个返回 JSON 响应的 API,如下所示;
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length
{
"SAPISetPermitInfo_response" : {
"RC" : "value",
"MessageText" : "value"
}
}
我想创建一个可以与
一起使用的 c# 类定义JsonConvert.DeserializeObject<SAPISetPermitInfoResponse>(response);
但由于嵌套元素,我不确定如何构造 SAPISetPermitInfoResponse 类,以便它与响应 JSON 字符串一起正常工作。
目前,我们正在使用辅助方法从 JSON 字符串中去除“SAPISetPermitInfo_response”元素,然后反序列化结果,如下所示...
IDictionary<string, JToken> foo = JObject.Parse(response);
string key = foo.Keys.FirstOrDefault(k => k.EndsWith("_response"));
response = JsonConvert.SerializeObject(foo[key]);
但是,似乎应该有一种方法可以创建 SAPISetPermitInfoResponse 类,以便它允许嵌套元素而不需要帮助方法来解析 JSON 字符串。但是,到目前为止,我还没有找到任何运气。
我看过一篇帖子,他们建议创建两个类,一个只有一个字典属性 type ,其中对象是另一个具有 RC 和 MessageText 属性的类,但这似乎有点麻烦,应该需要两个类对于每个不同的 API 方法响应。 (这个 API 有大约 90 种不同的方法,它们都返回一个 JSON 响应,该响应以方法名称开头,后跟“_response”,以类似的嵌套方式)。
我无法控制 API 的响应字符串,所以我必须使用我得到的内容。我只是想确保我以正确和最有效的方式进行操作。
提前感谢您的帮助。
【问题讨论】:
标签: c# json json.net deserialization