[英]Using Json.NET to convert part of a JObject to Dictionary<string, string>
[英]JSON.NET will not convert back to JObject
我有一个微服务架构,可用于使用Angularjs,Web Api和DocumentDb开发的解决方案。 我有一个简单的控制器,它接收一个json文件,并通过电线将其作为JObject返回...就像这样...
using (StreamReader streamReader = new StreamReader(HostingEnvironment.MapPath(@"~/Json/" + path + ".json"), Encoding.UTF8))
{
dtsContent = JObject.Load(new JsonTextReader(streamReader));
}
return new IsoncOkResult<JObject>(dtsContent, this) ;
IsoncOkResult只是我对IHttpActionResult的实现上面的方法没有错误....但是当我在调用服务上执行此代码时...
var response = (HttpWebResponse)httpWebRequest.GetResponse();
var sr = new StreamReader(response.GetResponseStream());
var dtsLookup = JObject.Load(new JsonTextReader(sr));
我得到horribe JsonReader currentitem不是对象错误...
我已经尝试过JToken,JArray ....没有工作...我需要能够像这样在c#中访问返回的对象
dtsLookup["name"]
管他呢....
原始JSON是...
[ {
"name": "1|Identifiers|ShipName",
"flag": "1|Flag",
"ircs": "1|Identifiers|Ircs",
"flag_reg_number": "1|Identifiers|FlagRegNo",
"mmsi": "1|Identifiers|Mmis",
"port_of_registry": "1|Port",
"date_of_flag_registerd": "1|FirstRegDate",
"parallel_registry": "1|HistoricalData|ParallelReg",
"previous_de_registered_date": "1|HistoricalData|PrevDeRegDate",
"ffa_vid": "1|Identifiers|SecondaryId"}]
您的JSON由包含单个对象的数组组成:
[{"name1" : "value1", ..., "nameN" : "valueN"}]
方括号表示数组,嵌套的括号表示对象。
如果不确定是否将JSON对象嵌套在数组中,并且只想获取出现在JSON中的第一个对象,则可以执行以下操作:
var dtsRoot = (JContainer)JToken.Load(new JsonTextReader(sr)); // JContainer is the base class for JArray and JObject
var dtsLookup = dtsRoot.DescendantsAndSelf().OfType<JObject>().FirstOrDefault();
var name = (string)dtsLookup["name"];
或者,可以将SelectToken
与..
递归下降通配符一起使用,以查找出现在JSON文档中任何位置的给定名称的第一个属性的值:
var dtsRoot = JToken.Load(new JsonTextReader(sr));
var name = (string)dtsRoot.SelectToken("..name");
SelectToken
支持JSONPath查询语法 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.