0

まず、私の質問を読んでくれてありがとう。

Webリクエストの結果、次のJsonがあります。

{"GetCommunicationsResult":"
   {\"Rows\":
      [{\"Data\":\"2011-12-16T00:00:00\",\"Teacher\":\"Surname Name\",
       \"Communication\":\"bla bla bla and bla bla bla\"},

       {\"Data\":\"2011-10-18T00:00:00\",\"Teacher\":\"Surname Name\",
        \"Communication\":\"bla bla bla and bla bla bla\"}]
   }"
 }

プログラムを使用するには、デコードする必要があります。

  1. まず、JSONを文字列リソースとして取得します

    JSONObject jsonData = readUrl("http://myWebSite/folder/site.svc/Communications/000884");
    

    (readurlは、jsonを文字列として返すメソッドです)

  2. 次に、この文字列を使用してJSONObjectを作成します

    JSONObject BaseObject = new JSONObject(jsonData);   
    

    (不思議なことに、JSONObjectコンストラクターはInputstreamまたはReaderパラメーターを提供しませんが、文字列などのみを提供します)

  3. 最後に、JSONを減らしてみます

    JSONObject DerivatedObject=BaseObject.getJSONObject("GetCommunicationsResult");
    

しかし、私は奇妙な例外に遭遇します:

Value {"Rows":[{"Data":"2011-12-16T00:00:00","Teacher":"Surname Name","Communication":"bla bla bla and bla bla bla"},{"Data":"2011-10-18T00:00:00","Teacher":"Surname Name","Communication":"bla bla bla and bla bla bla"}]} 
at GetCommunicationsResult of type java.lang.String cannot be converted to JSONObject

この問題を解決する方法について何か提案はありますか?
コードが実際にJSONを検出する理由はわかりませんが、デコードできません。

4

1 に答える 1

4

誤った見積もりがあります。この行の最後のオープンクォートを参照してください。

{"GetCommunicationsResult":"

これにより、値はJSONObjectではなく文字列になります。他のすべての"はJSONでエスケープされているため、文字列であることがわかります。

{\"Rows\":

それはそうあるべきです。

{"Rows":

そのため、その問題の原因となっているサーバーに問題があります。多分あなたはこのようなものを置いています:

jsonObject.put("GetCommunicationsResult", someJsonObject.toString() );
于 2012-05-11T20:24:03.610 に答える