2011-02-03 11 views
1

OK、私はJSONと全く新しいです。Json.NET - 私の無知を許してください。JavaScriptストリングから入れ子にされたJSONオブジェクトを解析する

私はGETリクエストから来る文字列を、C#アプリケーションで役に立つものにパースしようとしています。

文字列には、ネストされたJSONオブジェクトを含む構造体が含まれています。第1レベルのオブジェクトには、\u0040のようなUTF-8エンコーディングと\のようなエスケープ文字があります。次のレベルは、(5エスケープ文字まで!)ように\\のような二重のエスケープ文字を含む別のネストされたJSONオブジェクトが含まれていると...

をそれはまた「のような引用符のため"表現が含まれています。

私の最初のassumtionがありますこれらはネストされたJSONオブジェクトです。これらのネストされたオブジェクトを、LINQなどのクエリに役立つものに解析するにはどうすればよいですか?ロジックを自分で書く必要がありますか?既にですか? 文字列の最初のバイトは、明確にするのに役立ちます:

{\"phase\":2,\"id\":\"pagelet_search_results\",\"is_last\":true,\"css\":[\"Jo2rQ\",\"pxy5B\"],\"js\":[\"tVaAM\",\"rLVa6\",\"FJ3LF\"],\"resource_map\":{\"FJ3LF\":{\"type\":\"js\",\"src\":\"http:\\/\\/e.static.ak.fbcdn.net\\/rsrc.php\\/y8\\/p\\/r\\/1NVEOfjbXp5.js\"},\"pxy5B\":{\"type\":\"css\",\"permanent\":1,\"src\":\"http:\\/\\/f.static.ak.fbcdn.net\\/rsrc.php\\/yc\\/r\\/9H-KBGVNlw_.css\"}},\"onload\":[\"window.__UIControllerRegistry[\\\"c4d4ab726887b68c58602753\\\"] = new UIPagelet(\\\"c4d4ab726887b68c58602753\\\", \\\"\\\\\\/pagelet\\\\\\/generic.php\\\\\\/SearchObjectResultsPagelet\\\\\\/\\\", {\\\"params\\\":{\\\"viewerContext\\\":{\\\"userID\\\":123454549,\\\"accountID\\\":123454549,\\\"appID\\\":0,\\\"isOmnipotent\\\":false,\\\"isAuthenticated\\\":true,\\\"accessTokens\\\":[],\\\"instanceKey\\\":\\\"1254318719\\\\\\/1256318759\\\\\\/0\\\",\\\"originalViewerContext\\\":null,\\\"__index\\\":5,\\\"__sampleId\\\":null,\\\"__next\\\":-808,\\\"__state\\\":4,\\\"__preparer\\\":{\\\"runnablePreparables\\\":[],\\\"newRunnablePreparables\\\":[],\\\"blockedPreparables\\\":[],\\\"isRunning\\\":false,\\\"current\\\":null,\\\"isSequential\\\":false,\\\"round\\\":4,\\\"index\\\":3},\\\"__addedPreparers\\\":{\\\"3\\\":{\\\"runnablePreparables\\\":[],\\\"newRunnablePreparables\\\":[],\\\"blockedPreparables\\\":[],\\\"isRunning\\\":false,\\\"current\\\":null,\\\"isSequential\\\":false,\\\"round\\\":4,\\\"index\\\":3}},\\\"__siblings\\\":[],\\\"__children\\\":[],\\\"__ancestors\\\":[],\\ 

私はあなたの助け、人々に感謝し、あなたはあなたが得たオブジェクトの契約を知っている場合は、同じ契約にC#POCOクラス/クラスを作成し、JsonSerializer.DeserializeであなたのJSONをデシリアライズ、

+1

FYIフル機能のJSONシリアライザ/デシリアライザがFCLにあります。 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx –

答えて

0

)。 契約が不明な場合は、JObject.Parse(jsonString)を試してください。Values()PropertyValuesのようなメソッドを使用すると、LINQで照会できるコレクションが返されます。

-1
using Newtonsoft.Json; 
using Newtonsoft.Json.Ling; 

..... 


string js = "{\"phase\":2,\"id\":\"pagelet_search_results\"}";  
JObject jo = JObject.Parse(jsonString); 
int phase = (int)jo.SelectToken("phase"); 
string id = (string)jo.SelectToken("id"); 
関連する問題