JSON.NET从URL反序列化嵌套数据

时间:2014-07-16 15:10:58

标签: c# database json.net deserialization

我试图通过我的localhost将JSON数据导入命令行。当我通过我的Web浏览器浏览页面时,会重新调整以下JSON :(我使用的是VS 2008)

(http://LocalHost/example/00012/json.sp)

{"errors":[],
 "valid":true,
 "results":[{"address1":"2000 MAX1MAX2 ROAD","city":"Sunny City     ","state":"FL","zip":"00012"}]}

我希望能够在利用嵌套对象(List)的同时调用数据,以便我能够从该对象调用参数。这是我到目前为止所拥有的。 我在公共类的代码中有以下内容:

public class Result
{
    public string address1 { get; set; }
    public string city { get; set; }
    public sting state { get; set; }
    public sting zip { get; set; }
       }
 public class RObject
{
    public List<object> errors { get; set; }
    public bool valid { get; set; }
    public List<Result> results { get; set; }
}

这是我用来获取数据的代码:

var request = WebRequest.Create("http://local4510/example/00012/json.sp ");
        WebResponse response = request.GetResponse();

        string json;

        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            json = sr.ReadToEnd();
        }
        JObject jResult = JObject.Parse(json); // Parses the data

        Result me = new Result()
        {
           Me.address1 = (string)jResult["results"][" address1 "] 
    Me city = (string)jResult["results"][" city "] 
Me state  = (string)jResult["results"][" state "] 
           Me zip = (string)jResult["results"]["zip"]
        };

//Console.Write(jResult); working
   Console.Write(me.address1+ ”--” + me.city+”--” + me.state+”--”+ me.zip)
Console.Read();

1 个答案:

答案 0 :(得分:0)

除了一些语法错误之外,你的主要问题是你没有对待&#34;结果&#34;&#34;作为一系列结果。代码看起来应该更像......

        Result me = new Result()
        {
           address1 = (string)jResult["results"][0]["address1"], 
           city = (string)jResult["results"][0]["city"] ,
           state  = (string)jResult["results"][0]["state"] ,
           zip = (string)jResult["results"][0]["zip"]
        };

...注意硬编码的[0]偏移量来访问结果数组中的第一个结果。