我试图发送一个HttpRequest
,它接受一个像这样的JSON对象:
{
"some.setting.withperiods":"myvalue"
}
我一直在为我的其他请求创建匿名对象,但由于名称中包含一个点,我无法使用此对象。
我知道我可以创建一个类并指定[DataMember(Name="some.setting.withperiods")]
属性,但必须有一个更轻量级的解决方案。
答案 0 :(得分:6)
没有“简单”的方法来实现这一点,因为C#中的.
是保留的。
但是,通过使用字典和集合初始化程序,您可以实现非常接近的目标。它仍然有点孤立,并且不需要您创建自定义类。
var obj = new Dictionary<string, object>
{
{ "some.setting.withperiods", "myvalue" }
};
var json = JsonConvert.SerializeObject(obj);
//{"some.setting.withperiods":"myvalue"}
答案 1 :(得分:5)
您可以使用相同的“JsonProperty”属性例如
[JsonProperty(".Name")]
public string Name { get; set; }
答案 2 :(得分:1)
除此之外,我想添加如何从json中检索数据,其中name具有以特殊字符开头的name属性,如在Web API 2.0中具有&#34; .issued&#34;。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
var jsonRespons="json response from the web api";
var issue= JObject.Parse(jsonResponse).GetValue(".issued");
答案 3 :(得分:0)
如果您在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");
答案 4 :(得分:0)
您可以使用JObject
(Json.Net的LINQ-to-JSON API的一部分)来创建相关的JSON:
string json = new JObject(new JProperty("some.setting.withperiods", "myvalue")).ToString();
答案 5 :(得分:-1)
您可以尝试为您的会员名称添加前缀@
以允许使用文字,但是这样做的方法是使用[DataMember]
,就像您在问题