一尘不染

如何使用json.net将额外的属性添加到序列化的JSON字符串中?

json

我在MVC 4程序中使用Json.net

我有一个item阶级的对象Item

我做了: string j = JsonConvert.SerializeObject(item);

现在,我想添加一个额外的属性,如"feeClass" : "A"j

我如何使用Json.net实现这一目标?


阅读 251

收藏
2020-07-27

共1个答案

一尘不染

您有几种选择。

正如@Manvik所建议的那样,最简单的方法就是在类中添加另一个属性并在序列化之前设置其值。

如果您不想这样做,那么下一个最简单的方法是将您的对象加载到中JObject,追加新属性值,然后从那里写出JSON。这是一个简单的示例:

class Item
{
    public int ID { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Item item = new Item { ID = 1234, Name = "FooBar" };
        JObject jo = JObject.FromObject(item);
        jo.Add("feeClass", "A");
        string json = jo.ToString();
        Console.WriteLine(json);
    }
}

这是上面的输出:

{
  "ID": 1234,
  "Name": "FooBar",
  "feeClass": "A"
}

另一种可能性是JsonConverter为您的Item类创建一个自定义,并在序列化过程中使用它。A
JsonConverter使您可以完全控制特定类在序列化过程中写入的内容。您可以根据需要添加属性,抑制属性,甚至写出不同的结构。对于这种特殊情况,我认为这可能是矫kill过正,但这是另一种选择。

2020-07-27