首页 新闻 赞助 找找看

使用 Newtonsoft.Json 反序列化时如何将带特殊字符的字段名处理一下?

0
悬赏园豆:10 [待解决问题]
string s="{"size":15,"query":{"match":{"data.query.match.promotionInfo.query":{"boost":1.3,"type":"phrase","query":"销售1"}}}}";

var
o = JsonConvert.DeserializeObject<dynamic>(s);



//data.query.match.promotionInfo.query 需处理掉 "."
Mr. Hu的主页 Mr. Hu | 初学一级 | 园豆:192
提问于:2016-09-01 12:25
< >
分享
所有回答(2)
0

什么意思?那就你的源字符串里面没有这东西呗?我虽然不知道nowtonjson是不是可以这么做,但基本上的一个原则是,不要手动拼json字符串。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-09-01 12:28

这个json串是一个搜索功能,搜索时候生成的请求信息,我要记录搜索的日志,但是存储的时候,动态类型的某些字段中有特殊字符(data.query.match.promotionInfo.query),无法存储。

支持(0) 反对(0) Mr. Hu | 园豆:192 (初学一级) | 2016-09-01 12:31
0

为什么要用那么奇怪的字符串做key

liuxb1991 | 园豆:661 (小虾三级) | 2016-09-01 12:42

是个结构的地址。

支持(0) 反对(0) Mr. Hu | 园豆:192 (初学一级) | 2016-09-01 13:11

@Mr. Hu: 不知道为什么要处理掉.

如果是要取值的话 可以这样

string str="{\"size\":15,\"query\":{\"match\":{\"data.query.match.promotionInfo.query\":{\"boost\":1.3,\"type\":\"phrase\",\"query\":\"销售1\"}}}}";
            var obj = JObject.Parse(str);
            var boost = obj["query"]["match"]["data.query.match.promotionInfo.query"]["boost"].ToString();
支持(0) 反对(0) liuxb1991 | 园豆:661 (小虾三级) | 2016-09-01 13:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册