gpt4 book ai didi

c# - JsonReader 如何处理单个项目与数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:43 25 4
gpt4 key购买 nike

我正在使用 JSON .NET 来解析我从网络服务收到的响应。问题是响应可能包含单个项目,或多个项目(数组),这将导致响应字符串略有不同。

单项响应:

{
"row": "1",
"name": "John"
}

多项响应:

[
{
"row": "1",
"name": "John"
},
{
"row": "2",
"name": "Doe"
},
]

我正在使用下面的代码来解析

 List<MyClass> wsRetrieveDataResponse = JsonReadSerializer.Deserialize<List<MyClass>>(reader);

这里的问题是因为它正在使用 List<MyClass> ,它需要一个数组,如果 Web 服务响应是单个项目,它将抛出错误。我该如何处理这两种情况?

[编辑]:JsonReadSerializer类型为 JsonSerializer ,它是 JSON.NET 的一部分。反序列化是 JSON.NET 函数。我只是添加了一些构造函数来处理某些情况。代码如下。

public static JsonSerializer JsonReadSerializer;

JsonReadSerializer 的构造函数

JsonReadSerializer = new JsonSerializer()
{
MissingMemberHandling = JSON_ENFORCE_MISSING ? MissingMemberHandling.Error : MissingMemberHandling.Ignore,
NullValueHandling = JSON_NULL_IGNORE ? NullValueHandling.Ignore : NullValueHandling.Include
};

[编辑 #2]:我的回复使用类型 JsonTextReader

// Get the response.  
...
WebResponse response = webRequest.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);

return new JsonTextReader(reader);

最佳答案

你可以使用这样的东西:

var token = JToken.Parse(content);

if (token is JArray)
{
IEnumerable<MyClass> response= token.ToObject<List<MyClass>>();
}
else if (token is JObject)
{
MyClass myClass= token.ToObject<MyClass>();
}

关于c# - JsonReader 如何处理单个项目与数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56626430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com