C#使用Newtonsoft.Json将对象保存到不带属性名的json中

时间:2019-03-14 13:40:45

标签: c# json

我有一个应该保存在json中的类。但我只希望将属性的值保存在列表中,而无需属性名称。

这是我现在得到的:

def listOfLists(n):

    lists = []

        if i <= 1:
            return lists
        else:
            lists += lists.append([])
            listOfLists(n-1)

例如,这就是我想要的:

{
"Data": {
  "property1": "value 1",
  "property2": "value 2",
  "property3": "value 3",
  "property4": "value 4",
  "property5": "value 5",
  }
}

我用以下行序列化该类:

{
  "Data": [
    "value 1",
    "value 2",
    "value 3",
    "value 4",
    "value 5"
  ]
}

有人知道如何存档吗?

编辑:

using Newtonsoft.Json;
//...
JsonConvert.SerializeObject(classInstance)

1 个答案:

答案 0 :(得分:2)

您可以使用反射从Example类中获取值:

public static IEnumerable<object> GetPropertyValues<T>(T input)
{
    return input.GetType()
        .GetProperties()
        .Select(p => p.GetValue(input));
}

现在您将能够获得预期的结果:

var input = new Example
{
    property1 = "value 1",
    property2 = "value 2",
    property3 = "value 3",
    property4 = "value 4",
    property5 = "value 5",
};

var json = JsonConvert.SerializeObject(new {Data = GetPropertyValues(input)}, Formatting.Indented);

json

{
  "Data": [
    "value 1",
    "value 2",
    "value 3",
    "value 4",
    "value 5"
  ]
}