你会如何对这个JSON进行deserialse / parse

时间:2017-08-23 21:38:36

标签: .net json winforms

我尝试过在stackoverflow上找到的各种示例以及www.newtonsoft.com的官方文档。我正在努力反序列化/解析这个

{
    "@odata.context": "http://localhost/WebApi/getDataCompanyData",
    "value": [
        {
            "ID": "001",
            "Name": "Sample Company"
        }
    ]
}

这是一个数组

{
    "@odata.context": "http://localhost/WebApi/getDataCustomerData",
    "value": [
        {
            "CustomerNumber": "A001",
            "ShortName": "Customer A"
        },
        {
            "CustomerNumber": "B001",
            "ShortName": "Customer B"
        }
    ]
}

我尝试使用http://json2csharp.com/生成的类,我甚至尝试过像这样简单的事情

dynamic jsonstring = IO.File.ReadAllText("DATA\\cprofile.json");
dynamic companydata = Json.Linq.JObject.Parse(jsonstring);
dynamic CustomerNumber = companydata("CustomerNumber");
Interaction.MsgBox(CustomerNumber);

之前我还没有使用过这个JSON结构。任何人都有处理这种JSON结构的建议吗?

注意:这是winforms

1 个答案:

答案 0 :(得分:1)

您可以考虑将JsonProperty与Json.Net一起使用

例如,带有数组的第二个片段

public class Value {
    public string CustomerNumber { get; set; }
    public string ShortName { get; set; }
}

public class RootObject {
    [JsonProperty("@odata.context")]
    public string OdataContext { get; set; }
    public IList<Value> value { get; set; }
}

从那里开始就按预期反序列化JSON。

var model = JsonConvert.DeserializeObject<RootObject>(json);
var context = model.OdataContext;

http://jsonutils.com/能够为您提供类的属性。唯一的问题是您需要手动重命名任何不符合正确c#语法的属性。