当前位置: 首页 > 面试题库 >

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

邹海超
2023-03-14
问题内容

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

我有一个item阶级的对象Item

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

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

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


问题答案:

您有几种选择。

正如@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过正,但这是另一种选择。



 类似资料:
  • 问题内容: 我想使用类似于JSON.NET的属性将枚举序列化为字符串 示例类: 如果我使用JSON.NET对此序列化: 设置为,我更喜欢。 问题答案: 看一看。应该做你想做的。 编辑: http : //james.newtonking.com/projects/json/help/html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm

  • 问题内容: 我正在使用JsonConvert.SerializeObject序列化模型对象。服务器希望所有字段都为字符串。我的模型对象具有数字属性和字符串属性。我无法将属性添加到模型对象。有没有一种方法可以将所有属性值序列化为字符串?我必须仅支持序列化,而不支持反序列化。 问题答案: 您甚至可以为数字类型提供自己的数字。我只是想这和它的作品- 它的快速和肮脏的,你几乎肯定希望把它扩大到支持其他数字

  • 问题内容: 我正在尝试使用Json.NET将列表序列化为json字符串,但返回字符串中包含反斜杠,这反过来使json解析失败。 上面的代码返回 这将导致所有JSON解析失败。如何删除这些。 问题答案: 不,不是 可能有两个问题: A)您正在查看调试器的结果。为了检查这一点,将其放入一个临时变量中(就像我所做的一样),然后使用调试器进行查看。单击沙漏右箭头,然后选择。 要么 B)调用方法将对象 再次

  • 问题内容: 我将json字符串存储到mysql中的文本字段中。插入后,我想更新我的json字符串,并使用jackson json将mysql行ID添加到其中。 我有一个Json格式的Java字符串 我希望添加另一个K / V,而无需编写代码行。 终于有了这个: 我可以将String转换为JsonNode: 想要做这样的事情 然后在mysql中使用新的json字符串在我的文本字段中更新 我做不到 我

  • 我将json字符串存储到MySQL中的文本字段中。插入之后,我希望更新我的json字符串,并使用jackson json将mysql行id添加到其中。 我有一个Json格式的java字符串

  • 问题内容: 我有一些具有各种属性的JSON,其中大多数是简单数据类型。但是,我在JSON中有一个属性,当我将其反序列化为C#类时,我只需要将其反序列化为字符串即可。 JSON示例: 除了将是有效的JSON对象外,“ json”对象没有任何设置结构。 因此,在上面的示例中,“ json”的值是一个JSON对象-但是当它反序列化时,我需要将它作为字符串。 因此,如果我的C#类是: 然后,如果我使用: