1

我正在尝试将仅包含字符串属性的平面对象序列化为 JSON。我得到的是:

{
    "Inputs": {
        "prop1": "value1",
        "prop2": "value2"
    }
}

我需要的是:

{
    "Inputs": [{
            "key": "prop1",
            "value": "value1"
        },
        {
            "key": "prop2",
            "value": "value2"
        }
    ]
}

我的第一个想法是编写一个自定义转换器,该转换器首先将对象转换为字典(基于https://stackoverflow.com/a/4944547/9806449),然后迭代键以将其构建为所需的格式,但它感觉必须有一个更简单的解决方案让我望而却步。

有任何想法吗?谢谢!

4

1 回答 1

2

如果我理解正确。这是基本的序列化。你想用键值对序列化你的对象。

public class Obj
{
    public Obj(string key, string value)
    {
        Key = key;
        Value = value;
    }

    public string Key { get; set; }

    public string Value { get; set; }
}

主要的,

 static void Main(string[] args)
 {
     var response = new Dictionary<string, List<Obj>>();
     var inputObjs = new List<Obj>();

     inputObjs.Add(new Obj("prop1", "value1"));
     inputObjs.Add(new Obj("prop2", "value2"));

     response.Add("Inputs", inputObjs);

     var serializedObj = JsonConvert.SerializeObject(response);

     Console.ReadKey();
 }

我使用Newtonsoft序列化对象

你会得到这个结果,

{
    "Inputs": [{
            "key": "prop1",
            "value": "value1"
        },
        {
            "key": "prop2",
            "value": "value2"
        }
    ]
}
于 2018-08-13T10:38:47.383 回答