json.net,jsonconvert.deserializeObject-避难所化的问题



当我试图用json.net对我的json进行启用时,它为我的json数组提供了无效的值。

我有简单的json:

[
{
    "PhaseName": "Start",
    "Advices": ["Lorem ipsum dolor",
    "Lorem ipsum dolor",
    "Lorem ipsum dolor"]
},
{
    "PhaseName": "In Progress",
    "Advices": ["Lorem ipsum dolor",
    "Lorem ipsum dolor",
    "Lorem ipsum dolor"]
},
{
    "PhaseName": "Finish",
    "Advices": ["Lorem ipsum dolor",
    "Lorem ipsum dolor",
    "Lorem ipsum dolor"]
}

]

和我的代码中的通讯类:

public class Advices
{
    public string PhaseName { get; set; }
    public List<string> AdvicesList { get; set; }
}

和一个代表一系列建议对象的可靠性:

public class MyAdvices
{
    private Advices[] MyAdvicesArrays;
....

所以当我试图这样对我的json进行挑选时:

MyAdvicesArrays= JsonConvert.DeserializeObject<Advices[]>(sMyJSON));

json.net在我的MyadVicesArrays数组中每个对象的"阶段名称"属性填充具有正确的值,但每个对象的建议数组无效:如果您在运行时检查它们,则"无法评估表达式"。我不明白。我做错了什么?

您的json根据实体无效。

在您的类型中,将AdvicesList更改为Advices

public List<string> AdvicesList { get; set; }

将其更改为

public List<string> Advices { get; set; }

不,你的json和班级一样不正确。

首先将您的JSON更改为:

{
    phases:[
        {
            "PhaseName": "Start",
            "Advices": ["Lorem ipsum dolor",
            "Lorem ipsum dolor",
            "Lorem ipsum dolor"]
        },
        {
            "PhaseName": "In Progress",
            "Advices": ["Lorem ipsum dolor",
            "Lorem ipsum dolor",
            "Lorem ipsum dolor"]
        },
        {
            "PhaseName": "Finish",
            "Advices": ["Lorem ipsum dolor",
            "Lorem ipsum dolor",
            "Lorem ipsum dolor"]
        }
    ]
}

在您没有正确声明JSON对象之前,请注意。您也需要数组的属性。

现在您需要两个类:

public class AnythinYouWant{
    public List<Phase> Phases{get;set;}
}
public class Phase{
    public string PhaseName{get;set;}
    public List<string> Advices{get;set;}
}

请注意,顶级JSON对象的头等舱是如何的。这个名字可以是您想要的。但是任何属性都需要匹配名称。

我要做的工作就是更改Advices类的定义:

public class Advice
{
    public string PhaseName { get; set; }
    public List<string> Advices { get; set; }
}

我将类名称更改为Advice,而AdvicesList属性更改为Advices

相关内容

  • 没有找到相关文章

最新更新