C# JSON.NET不会转换回JObject

C# JSON.NET不会转换回JObject,c#,json,json.net,C#,Json,Json.net,我使用Angularjs、Web Api和DocumentDb为我正在开发的解决方案提供了一个微服务体系结构。我有一个简单的控制器,它接受一个json文件,并将其作为作业对象跨线返回。。。就像这样 using (StreamReader streamReader = new StreamReader(HostingEnvironment.MapPath(@"~/Json/" + path + ".json"), Encoding.UTF8)) {

我使用Angularjs、Web Api和DocumentDb为我正在开发的解决方案提供了一个微服务体系结构。我有一个简单的控制器,它接受一个json文件,并将其作为作业对象跨线返回。。。就像这样

using (StreamReader streamReader = new StreamReader(HostingEnvironment.MapPath(@"~/Json/" + path + ".json"), Encoding.UTF8))
            {
                dtsContent = JObject.Load(new JsonTextReader(streamReader));
            }
            return new IsoncOkResult<JObject>(dtsContent, this) ;
我得到的结论是,JsonReader currentitem不是对象错误

我试过JToken,JArray。。。。没用。。。我需要能够访问c#like中返回的对象

或者别的什么

原始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"}]
由包含单个对象的数组组成:

[{"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
支持。

由包含单个对象的数组组成:

[{"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"];

选择Token
支持。

谢谢!!那太好了!!谢谢那太好了!!
        var dtsRoot = JToken.Load(new JsonTextReader(sr));
        var name = (string)dtsRoot.SelectToken("..name");