C# 如何处理返回字符串和字符串数组的json?
我正在使用Yahoo fantasy体育api。我得到的结果如下:C# 如何处理返回字符串和字符串数组的json?,c#,json,C#,Json,我正在使用Yahoo fantasy体育api。我得到的结果如下: "player": [ { ... "eligible_positions": { "position": "QB" }, ... }, { ... "eligible_positions": { "position": [ "WR
"player": [
{
...
"eligible_positions": {
"position": "QB"
},
...
},
{
...
"eligible_positions": {
"position": [
"WR",
"W/R/T"
]
},
...
},
var json = new JavaScriptSerializer();
if (response != null)
{
JSONResponse JSONResponseObject = json.Deserialize<JSONResponse>(response);
return JSONResponseObject;
}
我怎么能反序列化这个
我的代码如下所示:
"player": [
{
...
"eligible_positions": {
"position": "QB"
},
...
},
{
...
"eligible_positions": {
"position": [
"WR",
"W/R/T"
]
},
...
},
var json = new JavaScriptSerializer();
if (response != null)
{
JSONResponse JSONResponseObject = json.Deserialize<JSONResponse>(response);
return JSONResponseObject;
}
当我运行此命令时,由于符合条件的_位置可以同时返回字符串和字符串数组,因此我不断收到错误“Type'System.string'不支持反序列化数组”
我还尝试将公共字符串位置{get;set;}
转到公共字符串[]位置{get;set;}
,但仍然出现错误
我该怎么处理 我会用。其思想是:“将位置
声明为列表
,如果json中的值是字符串,则将其转换为列表”
反序列化代码
var api = JsonConvert.DeserializeObject<SportsAPI>(json);
课程(简化版)
公共类可识别位置
{
[JsonConverter(typeof(StringConverter))]//当您使用string[]
时会出现什么错误?您是否尝试过List
?@IainBallard:这不会有帮助。是的。当我使用string[]时,我会将“System.string”转换为“System.string[]”类型。当我使用List时,我会得到“无法将System.string”类型的对象转换为“System.Collections.Generic.List`1”[System.String]'”;我想这个可能会对你有所帮助。@user850237你愿意使用Json.Net吗?太棒了。这很好,很简单,工作也很完美。谢谢!嘿,L.B,你能帮我解决这个问题吗?reader.value为null,我看的是List而不是List。如果你不实现WriteJson
公共覆盖,最好添加CanWrite
bool可以写入{get{return false;}}
{
"player": [
{
"eligible_positions": {
"position": "QB"
}
},
{
"eligible_positions": {
"position": [
"WR",
"W/R/T"
]
}
}
]
}
public class EligiblePositions
{
[JsonConverter(typeof(StringConverter))] // <-- See This
public List<string> position { get; set; }
}
public class Player
{
public EligiblePositions eligible_positions { get; set; }
}
public class SportsAPI
{
public List<Player> player { get; set; }
}