多次元の JSON 文字列をアプリケーションに解析しようとしています。文字列の一部を次に示します。
{"one": {"Title": "There Goes the Musical Neighborhood", "Body": "4 月 18 日 Public Enemy..."},"two": {"Title": "Public Enemys DJ Lord Tours Australia ", "本文": "公共の敵...
ご覧のとおり、キー ("one") の値が 2 番目の JSON 文字列に設定されており、キーは "title" と "body" で始まり、それぞれに独自の文字列値があります。
文字列を出力するために使用する私の Web サービスは、単一のキーと値のペアで正常に解析されます (例: {"タイトル": "そこに行くミュージカル ネイバーフッド"、"本文": "4 月 18 日公共の敵..."} Json.Netを使用していて、キーとクラスメンバーを簡単にペアリングできるため、文字列を解析して作成したクラスに保存します。
ここで、最大 5 つの文字列 (必ずしもすべてではない) をアプリケーションに解析して、ユーザーに出力する必要があります。
最初に、最初の配列 (例: {"one": {"Title": ...) から各値を解析しようとしました。これにより、格納される文字列は、独自のオブジェクトに解析できる単一の JSON 文字列になりますが、コードを実行すると、予期しないトークン「1」でエラーが返されるようです。
これが私がこれを解析している方法です。
var request = HttpWebRequest.Create(string.Format(@"http://moon.eastlink.com/~jandrews/webservice2.php"));
request.ContentType = "application/json";
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK)
Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
if(string.IsNullOrWhiteSpace(content)) {
Console.Out.WriteLine("Response contained empty body...");
}
else {
Console.Out.WriteLine("Response Body: \r\n {0}", content);
NewsArray news = JsonConvert.DeserializeObject<NewsArray>(content);
オブジェクトを逆シリアル化する前の私の応答は、文字列全体が正常で、コンソールに 1 つずつ出力されるため、ストリーム リーダーが文字列を取得していることがわかります。ただし、オブジェクトを逆シリアル化しようとすると、「行 1 位置 9 のトークンが無効です」というエラーが表示されます。文字列ブラケットをエスケープする方法に関係している可能性がありますが、オンライン パーサーでは問題なく動作しました。このサイトは私の完全な文字列がある場所なので、見てみることができます. 何が間違っているのか、またはこれについてより良い方法があるかどうか、何か考えはありますか?