4 <title>Serializing Partial JSON Fragments</title>
5 <link href="styles.css" rel="stylesheet" type="text/css" />
6 <link href="custom.css" rel="stylesheet" type="text/css" />
12 <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
13 <span class="topicTitle">Serializing Partial JSON Fragments</span></div>
16 <span style="color: DarkGray"> </span>
17 <p>Often when working with large JSON documents you're only interested in a small fragment of information.
18 This scenario can be annoying when you want to serialize that Json.NET into .NET
19 objects because you have to define .NET classes for the entire JSON result.</p>
20 <p>With Json.NET it is easy to get around this problem. Using LINQ to JSON you can
21 extract the pieces of JSON you want to serialize before passing them to the Json.NET serializer.</p>
23 <div class="overflowpanel">
26 <div style="font-family: Courier New; font-size: 10pt; color: black;">
27 <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">SearchResult</span></pre>
28 <pre style="margin: 0px;">{</pre>
29 <pre style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">string</span> Title { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
30 <pre style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">string</span> Content { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
31 <pre style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">string</span> Url { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
32 <pre style="margin: 0px;">}</pre>
38 <div class="overflowpanel">
41 <div style="font-family: Courier New; font-size: 10pt; color: black;">
42 <pre style="margin: 0px;"><span style="color: blue;">string</span> googleSearchText = <span style="color: #a31515;">@"{</span></pre>
43 <pre style="margin: 0px;"><span style="color: #a31515;"> ""responseData"": {</span></pre>
44 <pre style="margin: 0px;"><span style="color: #a31515;"> ""results"": [</span></pre>
45 <pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
46 <pre style="margin: 0px;"><span style="color: #a31515;"> ""GsearchResultClass"": ""GwebSearch"",</span></pre>
47 <pre style="margin: 0px;"><span style="color: #a31515;"> ""unescapedUrl"": ""http://en.wikipedia.org/wiki/Paris_Hilton"",</span></pre>
48 <pre style="margin: 0px;"><span style="color: #a31515;"> ""url"": ""http://en.wikipedia.org/wiki/Paris_Hilton"",</span></pre>
49 <pre style="margin: 0px;"><span style="color: #a31515;"> ""visibleUrl"": ""en.wikipedia.org"",</span></pre>
50 <pre style="margin: 0px;"><span style="color: #a31515;"> ""cacheUrl"": ""http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org"",</span></pre>
51 <pre style="margin: 0px;"><span style="color: #a31515;"> ""title"": ""<b>Paris Hilton</b> - Wikipedia, the free encyclopedia"",</span></pre>
52 <pre style="margin: 0px;"><span style="color: #a31515;"> ""titleNoFormatting"": ""Paris Hilton - Wikipedia, the free encyclopedia"",</span></pre>
53 <pre style="margin: 0px;"><span style="color: #a31515;"> ""content"": ""[1] In 2006, she released her debut album...""</span></pre>
54 <pre style="margin: 0px;"><span style="color: #a31515;"> },</span></pre>
55 <pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
56 <pre style="margin: 0px;"><span style="color: #a31515;"> ""GsearchResultClass"": ""GwebSearch"",</span></pre>
57 <pre style="margin: 0px;"><span style="color: #a31515;"> ""unescapedUrl"": ""http://www.imdb.com/name/nm0385296/"",</span></pre>
58 <pre style="margin: 0px;"><span style="color: #a31515;"> ""url"": ""http://www.imdb.com/name/nm0385296/"",</span></pre>
59 <pre style="margin: 0px;"><span style="color: #a31515;"> ""visibleUrl"": ""www.imdb.com"",</span></pre>
60 <pre style="margin: 0px;"><span style="color: #a31515;"> ""cacheUrl"": ""http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com"",</span></pre>
61 <pre style="margin: 0px;"><span style="color: #a31515;"> ""title"": ""<b>Paris Hilton</b>"",</span></pre>
62 <pre style="margin: 0px;"><span style="color: #a31515;"> ""titleNoFormatting"": ""Paris Hilton"",</span></pre>
63 <pre style="margin: 0px;"><span style="color: #a31515;"> ""content"": ""Self: Zoolander. Socialite <b>Paris Hilton</b>...""</span></pre>
64 <pre style="margin: 0px;"><span style="color: #a31515;"> }</span></pre>
65 <pre style="margin: 0px;"><span style="color: #a31515;"> ],</span></pre>
66 <pre style="margin: 0px;"><span style="color: #a31515;"> ""cursor"": {</span></pre>
67 <pre style="margin: 0px;"><span style="color: #a31515;"> ""pages"": [</span></pre>
68 <pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
69 <pre style="margin: 0px;"><span style="color: #a31515;"> ""start"": ""0"",</span></pre>
70 <pre style="margin: 0px;"><span style="color: #a31515;"> ""label"": 1</span></pre>
71 <pre style="margin: 0px;"><span style="color: #a31515;"> },</span></pre>
72 <pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
73 <pre style="margin: 0px;"><span style="color: #a31515;"> ""start"": ""4"",</span></pre>
74 <pre style="margin: 0px;"><span style="color: #a31515;"> ""label"": 2</span></pre>
75 <pre style="margin: 0px;"><span style="color: #a31515;"> },</span></pre>
76 <pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
77 <pre style="margin: 0px;"><span style="color: #a31515;"> ""start"": ""8"",</span></pre>
78 <pre style="margin: 0px;"><span style="color: #a31515;"> ""label"": 3</span></pre>
79 <pre style="margin: 0px;"><span style="color: #a31515;"> },</span></pre>
80 <pre style="margin: 0px;"><span style="color: #a31515;"> {</span></pre>
81 <pre style="margin: 0px;"><span style="color: #a31515;"> ""start"": ""12"",</span></pre>
82 <pre style="margin: 0px;"><span style="color: #a31515;"> ""label"": 4</span></pre>
83 <pre style="margin: 0px;"><span style="color: #a31515;"> }</span></pre>
84 <pre style="margin: 0px;"><span style="color: #a31515;"> ],</span></pre>
85 <pre style="margin: 0px;"><span style="color: #a31515;"> ""estimatedResultCount"": ""59600000"",</span></pre>
86 <pre style="margin: 0px;"><span style="color: #a31515;"> ""currentPageIndex"": 0,</span></pre>
87 <pre style="margin: 0px;"><span style="color: #a31515;"> ""moreResultsUrl"": ""http://www.google.com/search?oe=utf8&ie=utf8...""</span></pre>
88 <pre style="margin: 0px;"><span style="color: #a31515;"> }</span></pre>
89 <pre style="margin: 0px;"><span style="color: #a31515;"> },</span></pre>
90 <pre style="margin: 0px;"><span style="color: #a31515;"> ""responseDetails"": null,</span></pre>
91 <pre style="margin: 0px;"><span style="color: #a31515;"> ""responseStatus"": 200</span></pre>
92 <pre style="margin: 0px;"><span style="color: #a31515;">}"</span>;</pre>
93 <pre style="margin: 0px;"> </pre>
94 <pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> googleSearch = <span style="color: #2b91af;">JObject</span>.Parse(googleSearchText);</pre>
95 <pre style="margin: 0px;"> </pre>
96 <pre style="margin: 0px;"><span style="color: green;">// get JSON result objects into a list</span></pre>
97 <pre style="margin: 0px;"><span style="color: #2b91af;">IList</span><<span style="color: #2b91af;">JToken</span>> results = googleSearch[<span style="color: #a31515;">"responseData"</span>][<span style="color: #a31515;">"results"</span>].Children().ToList();</pre>
98 <pre style="margin: 0px;"> </pre>
99 <pre style="margin: 0px;"><span style="color: green;">// serialize JSON results into .NET objects</span></pre>
100 <pre style="margin: 0px;"><span style="color: #2b91af;">IList</span><<span style="color: #2b91af;">SearchResult</span>> searchResults = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span><<span style="color: #2b91af;">SearchResult</span>>();</pre>
101 <pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: #2b91af;">JToken</span> result <span style="color: blue;">in</span> results)</pre>
102 <pre style="margin: 0px;">{</pre>
103 <pre style="margin: 0px;"> <span style="color: #2b91af;">SearchResult</span> searchResult = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject<<span style="color: #2b91af;">SearchResult</span>>(result.ToString());</pre>
104 <pre style="margin: 0px;"> searchResults.Add(searchResult);</pre>
105 <pre style="margin: 0px;">}</pre>
106 <pre style="margin: 0px;"> </pre>
107 <pre style="margin: 0px;"><span style="color: green;">// Title = <b>Paris Hilton</b> - Wikipedia, the free encyclopedia</span></pre>
108 <pre style="margin: 0px;"><span style="color: green;">// Content = [1] In 2006, she released her debut album...</span></pre>
109 <pre style="margin: 0px;"><span style="color: green;">// Url = http://en.wikipedia.org/wiki/Paris_Hilton</span></pre>
110 <pre style="margin: 0px;"> </pre>
111 <pre style="margin: 0px;"><span style="color: green;">// Title = <b>Paris Hilton</b></span></pre>
112 <pre style="margin: 0px;"><span style="color: green;">// Content = Self: Zoolander. Socialite <b>Paris Hilton</b>...</span></pre>
113 <pre style="margin: 0px;"><span style="color: green;">// Url = http://www.imdb.com/name/nm0385296/</span></pre>
120 <div id="footer"></div>