如何创建一个属性包含点(句点)的json字符串?

我正在尝试发送一个HttpRequest ,它接受一个像这样的JSON对象:

 { "some.setting.withperiods":"myvalue" } 

我一直在为我的其他请求创建匿名对象,但由于名称包含一个点,因此我不能这样做。

我知道我可以创建一个类并指定[DataMember(Name="some.setting.withperiods")]属性,但必须有一个更轻量级的解决方案。

没有“简单”的方法来实现这一目标,因为. 在C#中保留。

但是,通过使用字典和集合初始化程序,您可以实现非常接近的function。 它仍然有点孤立,并且不需要您创建自定义类。

 var obj = new Dictionary { { "some.setting.withperiods", "myvalue" } }; var json = JsonConvert.SerializeObject(obj); //{"some.setting.withperiods":"myvalue"} 

您可以使用相同的“JsonProperty”属性。例如

  [JsonProperty(".Name")] public string Name { get; set; } 

除此之外,我想添加如何从json中检索数据,其中name具有以特殊字符开头的name属性,因为在Web API 2.0令牌中有“.issued”。

 using Newtonsoft.Json; using Newtonsoft.Json.Linq; var jsonRespons="json response from the web api"; var issue= JObject.Parse(jsonResponse).GetValue(".issued"); 

如果你在javascript中这样做,你可以轻松地前后移动,如下所示:

 var obj = { "some.setting.withdots":"myvalue" }; var json = JSON.stringify(obj); console.log(json); var str = JSON.parse(json); console.log(str); 

您是否尝试将其放入序列化字符串并发送,然后在客户端进行反序列化?

你可以做点什么

 var myAnnon = new { WithPeriod = "value" }; var j = JsonConvert.SerializeObject(myAnnon); j = j.Replace("WithPeriod", "some.setting.withdots"); 

您可以使用JObject (Json.Net的LINQ-to-JSON API的一部分 )来创建有问题的JSON:

 string json = new JObject(new JProperty("some.setting.withperiods", "myvalue")).ToString(); 

小提琴: https : //dotnetfiddle.net/bhgTta

您可以尝试使用@为您的成员名称添加前缀以允许使用文字,但是如您在问题中已经提到的那样使用[DataMember]