Json属性的双标签

本文关键字:标签 属性 Json | 更新日期: 2023-09-27 17:53:18

我需要将Json对象传递给API,但是API要求Json属性具有排序的双标签,例如:

{
     "name:id":"1234"
}

但是,使用Newtonsoft.Json。Linq,我没法精确地设置标签的格式。这是我到目前为止所尝试的(抛出一个错误)

dynamic json= new JObject();
json.name.id = "1234";

json.id = "1234";

工作很好。我也试过

json.name = new JProperty("id", "1234");

也会抛出错误。我还尝试将json文件硬编码为单个字符串并将其转换为jobobject,这也抛出了一个错误。我想做的是可能的还是我错过了什么?是否有其他Json包可以支持我的操作?

Json属性的双标签

使用JObject的字符串索引器表示法

dynamic json = new JObject();
json["name.id"] = "1234";

由于json本质上是作为键/值对构建的,因此使用字符串索引器可以让您克服非典型属性名称。

有多种方法可以做到这一点。

您可以使用JsonProperty属性并将属性名称指定为name:id,如:

class MyClass
{
    [JsonProperty("name:id")]
    public string Name_Id { get; set; }
}

然后你可以写:

MyClass obj = new MyClass();
obj.Name_Id = "1234";
var strJson = JsonConvert.SerializeObject(obj);

,你会得到回报:

{"name:id":"1234"}