如何解决在C#中反序列化GraphQLResponse / JSON数组
我正在尝试在C#中反序列化GraphQLResponse。
我的回复包含以下内容:
{
"myClassObjects": [
{
"var1": "var1Value","var2": "var2Value"
},//more MyClass objects
]}
根据一些消息来源,我现在应该能够使用以下命令解压缩并反序列化该代码:
var output = response.getDataFieldAs<IEnumerable<MyClass>>("myClassObjects");
不幸的是,getDataFieldAs方法不存在了。
response.Data是Newtonsoft.Json.Linq.JObject,其中包含对象“ myClassObjects”,该对象是MyClass对象的数组。当我尝试打开包装时:
List<MyClass> output = JsonConvert.DeserializeObject<List<MyClass>>(response.Data.ToString());
我不断得到:
无法反序列化当前JSON对象...,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化
这是我第一次与Json合作,我真的希望对此有一个方便的解决方案吗?任何帮助将不胜感激。
解决方法
当我反序列化MyClass对象的“数组”时,您会丢失rootObject。
public class RootObject {
[JsonProperty("myClassObjects")]
public List<MyClass> MyClassObjects {get;set; }
}
// then deserialize your json like this,var obj = JsonConvert.DeserializeObject<RootObject>(response.Content);
在没有有关如何获得响应的详细信息的情况下,我不确定如何解释response.Content
与response.Data
之间的区别。如果您使用RestSharp,则Data将为您提供正确反序列化的数据。内容是您要反序列化的原始字符串。
您不断收到的错误是因为您将Json反序列化为[],但将其{属性:值}反序列化。您的json的对象具有数组,而不是json是对象数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。