C# 如何处理返回字符串和字符串数组的json?

C# 如何处理返回字符串和字符串数组的json?,c#,json,C#,Json,我正在使用Yahoo fantasy体育api。我得到的结果如下: "player": [ { ... "eligible_positions": { "position": "QB" }, ... }, { ... "eligible_positions": { "position": [ "WR

我正在使用Yahoo fantasy体育api。我得到的结果如下:

"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; }
}