Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
c#反序列化嵌套json_C#_Json - Fatal编程技术网

c#反序列化嵌套json

c#反序列化嵌套json,c#,json,C#,Json,我不熟悉json——我正在使用现有的json数据结构并尝试输出数据,但是现有数据结构的一部分让我感到困惑 以下是我的json数据: {"supplier": { "supplierid":3590, "code":"ENCLES", "name":"Les Miserables", "analyses":[], "amenities":[], "info": "{\"Supplier\": {

我不熟悉json——我正在使用现有的json数据结构并尝试输出数据,但是现有数据结构的一部分让我感到困惑

以下是我的json数据:

{"supplier":
    {
    "supplierid":3590,
    "code":"ENCLES",
    "name":"Les Miserables",
    "analyses":[],
    "amenities":[],
    "info":
        "{\"Supplier\":
            {
            \"Name\":\"Les Miserables\",
            \"LastUpdate\":\"2011-11-01T22:16:06Z\",
            \"Address3\":\"London\",
            \"Address2\":\"51 Shaftesbury Avenue\",
            \"PostCode\":\"W1D 6BA\",
            \"Address1\":\"Queen's Theatre\",
            \"Address4\":\"\",
            \"Address5\":\"\",
            \"SupplierId\":3590,
            \"SupplierCode\":\"ENCLES\"
            }
        }",
        ...
        }
让我困惑的是信息数据——它是另一个嵌套的json字符串

我的班级是:

public class TheatreListing
{
    public supplier supplier;
}

public class supplier
{
    public int? supplierid { get; set; }
    public string code { get; set; }
    public string name { get; set; }
    public listingInfo info { get; set; }
}


public class listingInfo
{
    public Address Supplier { get; set; }

}

public class Address
{
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Address3 { get; set; }
    public string Address4 { get; set; }
    public string Address5 { get; set; }
    public string PostCode { get; set; }
}
我尝试访问数据的代码是:

TheatreListing tl = Json.Decode<TheatreListing>(json);
StringBuilder sbb = new StringBuilder();
sbb.Append("Name = " + tl.supplier.name.ToString());
sbb.Append("<br />Supplier ID = " + tl.supplier.supplierid.ToString());
sbb.Append("<br />Code = " + tl.supplier.code.ToString());
sbb.Append("<br />Address = " + tl.supplier.info.Supplier.Address2.ToString());
litOutput.Text += sbb.ToString();
有谁能告诉我在这里的错误吗

干杯


奈杰尔

问题出在底线之内

TheatreListing tl = Json.Decode<TheatreListing>(json);
theratelisting tl=Json.Decode(Json);
我认为对于您当前的json,转换为剧场列表失败

为什么不试试使用JavascriptSerializer,看看它是否有效

JavaScriptSerializer js = new JavaScriptSerializer();
TheatreListing  tree = js.Deserialize <TheatreListing>(json);
JavaScriptSerializer js=新的JavaScriptSerializer();
剧院列表树=js.Deserialize(json);

问题出在线路内部

TheatreListing tl = Json.Decode<TheatreListing>(json);
theratelisting tl=Json.Decode(Json);
我认为对于您当前的json,转换为剧场列表失败

为什么不试试使用JavascriptSerializer,看看它是否有效

JavaScriptSerializer js = new JavaScriptSerializer();
TheatreListing  tree = js.Deserialize <TheatreListing>(json);
JavaScriptSerializer js=新的JavaScriptSerializer();
剧院列表树=js.Deserialize(json);

我建议看几件事:

1) 用于从现有json生成c#类


2) 用来反序列化你的json,就像一个冠军

我建议看几件事:

1) 用于从现有json生成c#类


2) 用来反序列化你的json,就像一个冠军

我建议将内部内容反序列化为
字符串
,然后在第二次传递中将其反序列化为正确的类型。可以注册自定义类型转换器,但是。。。(理想情况下,它不会以如此丑陋的方式嵌套:-/)对不起,应该是“info”:“{\“Supplier\”:…不是“info”:“{\“Supplier\”:(括号中没有前面的引号)结束大括号也是一样?我建议将内部内容反序列化为
字符串,然后在第二次传递时反序列化为正确的类型。可以注册自定义类型转换器,但是…(理想情况下,它不会以如此丑陋的方式嵌套:-/)对不起,“info”:“{”Supplier\:…不是“info”:{\“Supplier\”:(括号中没有前面的引号)和结束括号的内容相同吗?