繁体   English   中英

JSON.NET不会转换回JObject

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM