如何将具有专用名称的List <object>序列化为JSON?

时间:2019-03-04 16:08:00

标签: c# json

我是json的新手,所以这可能是重复的。我事先表示歉意,但我不知道该如何搜索。

我有以下要序列化的json文件:

{
    "filename":"myFileName.txt",
    "sourceProperties":{
        "properties":[
        {
            "key": "myKey0",
            "value": "myValue0"
        },
        {
            "key": "myKey1",
            "value": "myValue1"
        }
        ]
    },
}

我声明了两个类似于该对象的类:

class Document
{
    [JsonProperty(PropertyName = "filename")]
    public string Filename { get; set; }

    [JsonProperty(PropertyName = "sourceProperties")]
    public List<DocProperty> Properties { get; set; }
}

class DocProperty
{
    [JsonProperty(PropertyName = "key")]
    public string Key { get; set; }

    [JsonProperty(PropertyName = "value")]
    public string Value { get; set; }
}

但是,当然不会显示json文件中必需的列表标签“ properties”。

声明我的对象的正确方法是什么?我得到“ sourceProperties”标签,然后是“ properties”标签和列表?

1 个答案:

答案 0 :(得分:1)

类似这样的东西:

class Document
{
    [JsonProperty(PropertyName = "filename")]
    public string Filename { get; set; }

    [JsonProperty(PropertyName = "sourceProperties")]
    public SourceProperties Source { get; set; }
}

class SourceProperties
{
    [JsonProperty(PropertyName = "properties")]
    public Dictionary<string, string> Properties { get; set; }
}

我故意将List<DocProperty>替换为 Dictionary 类,因为它的格式具有自描述性,并且与您的 JSON 文件的结构匹配,但是您可以使用{{ 1}},如果您真的想要。