无法在C#

时间:2017-01-25 00:06:48

标签: c# json json.net

我从第三方收到以下JSON字符串:

{
    "Ch": [{
        "i": 100,
        "m": "Time",
        "u": "(sec)",
        "d": 0,
        "z": 0.345313,
        "yi": "0.000000",
        "ya": "6.906250",
        "a": 0,
        "s": 1664,
        "data": "RN]]>"
    }, {
        "i": 101,
        "m": "Stress",
        "u": "(kPa)",
        "d": 0,
        "z": 60,
        "yi": "0.000000",
        "ya": "1200.000000",
        "a": 0
    }, {
        "i": 102,
        "m": "Strain",
        "u": "(micro e)",
        "d": 0,
        "z": 8,
        "yi": "200.000000",
        "ya": "360.000000",
        "a": 0
    }, {
        "i": 103,
        "m": "Stress",
        "u": 360,
        "d": 0,
        "z": 0,
        "yi": "0.000000",
        "ya": "0.000000",
        "a": 0,
        "s": 1664,
        "data": "QVORR`Pb_UQRR</code>OObTNRRUTaWRVRRSaPQPdRRaPNSORRR]]>"
    }, {
        "i": 104,
        "m": "Strain",
        "u": 360,
        "d": 0,
        "z": 0,
        "y": 0,
        "yi": "0.000000",
        "ya": "0.000000",
        "a": 1,
        "s": 1664,
        "data": "SVdRQSP_VWQRQa]]>"
    }]
}

我使用以下类:

public class testCh
{
    public int i { get; set; }
    public string m { get; set; }
    public object u { get; set; }
    public int d { get; set; }
    public double z { get; set; }
    public string yi { get; set; }
    public string ya { get; set; }
    public int a { get; set; }
    [JsonIgnore]
    public int s { get; set; }
    [JsonIgnore]
    public string data { get; set; }

}

public class testRootObject
{
    public List<testCh> tCh { get; set; }
}

最后我在我的主要课程中尝试这个:

var response1 = JsonConvert.DeserializeObject<testRootObject>(content1);

foreach (testCh tc in response1.tCh)
{
    string name = tc.m;
}

我得到一个空的testRootObject []

我试图忽视&#34; a&#34;和&#34;数据&#34;在我的testCH课程中:

[JsonIgnore]
public int s { get; set; }

[JsonIgnore]
public string data { get; set; }

它没有用。

我不确定为什么我无法对其进行反序列化。它一定是愚蠢的东西,但经过几天的努力,我无法看到它。

非常感谢任何帮助或提示。

1 个答案:

答案 0 :(得分:0)

我已经检查过并确认了。你在这里遇到的唯一错误是列表对象的名称。它应该是{j}字符串中的Ch

public class testRootObject
{
    public List<testCh> Ch { get; set; }
}

如果必须将该属性名称设为tCh,则可以执行以下操作:

public class testRootObject
{
    [JsonProperty("Ch")]
    public List<testCh> tCh { get; set; }
}