【发布时间】:2016-08-16 00:49:49
【问题描述】:
我正在查询 OpenLibrary.org 图书数据库,但其中一个怪癖是,当您按 ISBN 请求图书时,结果包括 ISBN id 作为数据结构的最外层部分,如下所示:
{"ISBN:0192821474": { "我真正关心的东西" } }
当我生成一个阻碍的包装类时;这也很复杂,因为包装类最终被命名为 ISBN0192821474。为此,我正在使用“Xamasoft JSON 类生成器”。
我需要做的是“跳过”最外层的元素并将其文本作为我响应的实际内容。
最好的方法是什么?我有 Newtonsoft.Json 和 RestSharp,我希望我能以某种方式将结构“走”得更深一层并从那里开始工作。
例如,在下面的代码中,如果 response.Content 是子节点的内容,它会很好地工作。
var client = new RestClient("http://openlibrary.org");
var request = new RestRequest("/api/books?bibkeys=ISBN:0192821474&jscmd=data&format=json", Method.GET);
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
var x = JsonConvert.DeserializeObject<Example.OpenLibrary>(response.Content);
我确信我可以编写一个正则表达式来解析它,但显然这不是“正确”的方法,所以我需要一些指导。
【问题讨论】:
-
这里有一些来自 Newtonsoft (newtonsoft.com/json/help/html/SerializingJSONFragments.htm) 的文档给出了如何做到这一点的清晰示例:P
标签: c# json json.net restsharp