2012-04-15 2 views
2

私はパブリケーションの静的なリストを公開する非常に基本的なASP MVCアプリケーションを持っています(下記のコードと結果を参照)。なぜASP MVCはAndroidが好きではないJSON形式を作成しますか?

コード:

public JsonResult Index() 
    { 
     List<Publication> list = new List<Publication>() { 
      new Publication() { Id = 1, Name = "War and Peace" }, 
      new Publication() { Id = 2, Name = "Harry Potter" }, 
      new Publication() { Id = 3, Name = "Cat in the Hat" } 
     }; 
     return this.Json(list, JsonRequestBehavior.AllowGet); 
    } 

結果:私はAndroidの中でそれを消費しようとすると

[{"Id":1,"Name":"War and Peace"},{"Id":2,"Name":"Harry Potter"},{"Id":3,"Name":"Cat in the Hat"}]

私は次のエラーを取得する:

04-15 12:00:57.331: W/System.err(209): org.json.JSONException: A JSONObject text must begin with '{' at character 1 of [{"Id":1,"Name":"War and Peace"},{"Id":2,"Name":"Harry Potter"},{"Id":3,"Name":"Cat in the Hat"}]

私は開始を削除することができます[と終了]をクリックするとエラーが表示されなくなります。もう一つの選択肢は、{出版物:ロジックをアンドロイドコードの先頭に置くことですが、すでにそこにあるはずのようです。

MVCアプリケーションのコードを更新して、JSONの "ready to be consumed"バージョンを生成するにはどうすればよいですか?

ご協力いただきまして誠にありがとうございます。

+0

FYI、MVCがありませんJson – Baz1nga

+0

「return this.Json(list、JsonRequestBehavior.AllowGet);」とは何ですか?行ですか?結果はJSONと非常によく似ています。 JSONメソッドの名前は、私がJSONメソッドを使用していると信じさせてくれます。 – alockrem

+0

標準であるJSON形式でresultSetを構築しています。 – Baz1nga

答えて

2

まず、jsonの文字列を変更してはいけません。受け取ったときは、構文解析に混乱する可能性があるからです。

第2に、[で始まり、]で終わるため、Json文字列は配列形式です。したがって、JSONObjectの代わりにJSONArrayを使用する必要があります。

+0

十分に簡単でした。どうもありがとうございました。 – alockrem

1

GSONをお勧めします。それは使いやすく、速く、正確です。

関連する問題