Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法分析Json子对象_Asp.net_Asp.net Mvc_Json_Asp.net Mvc 5_Json.net - Fatal编程技术网

Asp.net 无法分析Json子对象

Asp.net 无法分析Json子对象,asp.net,asp.net-mvc,json,asp.net-mvc-5,json.net,Asp.net,Asp.net Mvc,Json,Asp.net Mvc 5,Json.net,我正在使用JObject解析下面的Json对象 string Jstring = @"{ "PolicyId" :"xxxxxx", "PolicyHolder" :{"title":"Mr", "FirstName":"test", "LastName":"testLast"} }"; 我可以通过下面的代码获得PolicyId值 Jobject jobj = Jobject.parse(Jstring); string PolicyId = jobj.value<string&

我正在使用
JObject
解析下面的
Json
对象

string Jstring = @"{
  "PolicyId" :"xxxxxx",
  "PolicyHolder" :{"title":"Mr", "FirstName":"test", "LastName":"testLast"}
}";
我可以通过下面的代码获得
PolicyId

Jobject jobj = Jobject.parse(Jstring);
string PolicyId = jobj.value<string>("PolicyId");
我已经调试了以下代码:

jobj.Properties() 
我可以在列表中找到
投保人
。我也试过下面的代码,值总是
null

JProperty jproperty = jobj.Properties().SingleOrDefault(x => x.Name == "PolicyHolder");
有人知道会发生什么吗?

string Holder=jobj.value(“保单持有人”);
string Holder = jobj.value<string>("PolicyHolder");
由于
投保人
不是
字符串
,因此上述行失败。您正试图将其强制转换为
字符串
。它是一个
对象
。您必须使用
保单持有人的属性创建一个类
,并将其用作类型,而不是
字符串

以下是工作dotNetFiddle: 控制台输出:

下面是我最终声明和使用的类

public class PolicyHolder
{
    public string title { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Policy
{
    public string PolicyId { get; set; }
    public PolicyHolder PolicyHolder { get; set; }
}
如前所述,
投保人
是一个
对象
而不是字符串

下面是完整的代码列表(因此答案是自包含的)


谢谢!我发现我必须把它分配给JToken对象,不用担心。干得好
public class PolicyHolder
{
    public string title { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Policy
{
    public string PolicyId { get; set; }
    public PolicyHolder PolicyHolder { get; set; }
}
using System;               
using System.Linq;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
                    
public class Program
{
    // Solution to SO Question: https://stackoverflow.com/q/27159478/325521
    // This Answer: https://stackoverflow.com/a/
    // Author: Shiva Manjunath
    // SO Profile: https://stackoverflow.com/users/325521/shiva
    public static void Main()
    {       
        string Jstring = @"{
        ""PolicyId"" :""xxxxxx"",
        ""PolicyHolder"" :{""title"":""Mr"", ""FirstName"":""test"", ""LastName"":""testLast""}
        }";
        
        JObject jObject = JObject.Parse(Jstring);
        JProperty jProperty = jObject.Properties().SingleOrDefault(x => x.Name == "PolicyHolder");
        
        Console.WriteLine("Printing Policy Holder Details....");
        Console.WriteLine(jProperty.Value);
    }
}

public class PolicyHolder
{
    public string title { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Policy
{
    public string PolicyId { get; set; }
    public PolicyHolder PolicyHolder { get; set; }
}