C# Json属性C的双标签#

C# Json属性C的双标签#,c#,json,linq,json.net,double,C#,Json,Linq,Json.net,Double,我需要将Json对象传递给API,但API要求Json属性具有双重排序标签,例如: { "name:id":"1234" } 但是,使用Newtonsoft.Json.Linq,我无法准确格式化标签。以下是我到目前为止所尝试的(这会抛出一个错误) 做 很好用。我也试过了 json.name = new JProperty("id", "1234"); 这也会抛出一个错误。我还尝试将json文件编码为单个字符串,并将其转换为JObject,这也引发了一个错误。我想做的是可能的还是我遗

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

{
     "name:id":"1234"
}
但是,使用Newtonsoft.Json.Linq,我无法准确格式化标签。以下是我到目前为止所尝试的(这会抛出一个错误)

很好用。我也试过了

json.name = new JProperty("id", "1234");
这也会抛出一个错误。我还尝试将json文件编码为单个字符串,并将其转换为JObject,这也引发了一个错误。我想做的是可能的还是我遗漏了什么?我是否可以使用另一个Json包来支持我想要做的事情?

使用JObject的字符串


由于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"}
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"}