2014-11-23 152 views
2

首先,这已被问了很多次,但读过我发现的所有帖子都没有提供一个解决我特定情况的答案。如何使用JSON.net格式化嵌套JSON对象的输出?

另外,请原谅任何不正确的术语,因为我可能会滥用条款...

我试图从该查询采取JSON和简单地输出到文本块:

http://www.imdb.com/xml/find?json=1&nr=1&nm=on&q=jeniffer+garner

其产生此:

{ 
    "name_approx":[ 
    { 
     "id":"nm0004950", 
     "title":"", 
     "name":"Jennifer Garner", 
     "description":"Actress, Dallas Buyers Club" 
    }, 
//more code 
{ 
    "id":"nm3144518", 
    "title":"", 
    "name":"Jennifer Varner", 
    "description":"Self, THS Investigates: Hot for Student" 
}]} 

我试图使用的代码如下。

类:

public class Movie 
{ 
    public List<Stream> name_approx { get; set; } 

    public Movie() 
    {} 
} 

public class Stream 
{ 
    public string id { get; set; } 
    public string title { get; set; } 
    public string name { get; set; } 
    public string description { get; set; } 

    public Stream() 
    {} 
} 

和...

searchOutput.Text = ""; 
searchStatusOutput.Text = "Awaiting Response..."; 
string userURI = inputAddress.Text; 

var response = await httpClient.GetAsync(userURI); 
response.EnsureSuccessStatusCode(); 

var content = await response.Content.ReadAsStringAsync(); 

Movie output = JsonConvert.DeserializeObject<Movie>(content); 

//searchOutput.Text = ??????   

当我运行此我可以看到,影片输出正确包含一个'name_approx'对象,并嵌套在20如我所料,'Streams'

我不知道如何输出这个到我的文本块。我尝试了很多方法,并认为我需要使用某种形式的foreach,但是我卡住了,无法解决。

回答

1

既然您已将它作为Json对象,您可以将父对象序列化回格式化的Json字符串并将其显示在< pre>标记中以保持格式。

Json.Net有一个方法是:

string json = JsonConvert.SerializeObject(movieObject, Formatting.Indented); 
+1

太感谢你了,我一直在尝试3小时,该做我自己之前,我张贴在这里。 – James 2014-11-23 16:24:43

+0

不用担心队友,如果你打算使用这个库,请查看文档,因为它非常强大。 – 2014-11-23 16:39:04