2011-12-26 5 views
0

私はブラックベリーの周りに浮かんでいるJSONライブラリを使用しており、この回答に続いて "How to parse the JSON response in Blackberry/J2ME?"と書いてあります。Blackberry JSONパーサーを使用して、 "["を文字列から解析するにはどうすればよいですか?

私が抱えている問題は、JSONObject has to begin with a "{"というエラーが表示されていることです。私のJSON文字列は[ ]にラップされています。これはWebサービスの機能です。

私はAndroidとiPhoneで使用していたライブラリを削除したので、この問題を回避するにはどうすればよいでしょうか?私はすべてが[ ]を解析できるとは思わない。なぜなら、これらは多次元JSON文字列で使われているからだと思う。


編集:

ここでは例です:

[{"nid":"1","title":"test","image":"m0.jpg","by":"Presented by","by_name":"Inc.","summary":"..."}, {"nid":"6","title":"A","image":".jp[0.0] g","by":"Presented by","by_name":"Theatre","summary":""}] 
+0

'配列はなく、オブジェクト – fge

+0

http://docs.blackberry.com/en/developers/deliverables/21128一度確認してくださいである[' JSONデータの例を与えるが、JSON入力が始まります/Code_sample_Parse_JSON_data_structure_1319797_11.jsp –

答えて

0

あなたはJSONデータの有効性がわからない場合は、例えば、任意のJSON Validatorを使用JSONLint

あなたのデータには、[]"image":".jp[0.0] g"などの不要な文字が含まれています。私はそれらのデータがコンソールに印刷中にEclipseによって追加されると思います。

例で提供されるデータはJSONObjectではありませんが、配列です。まず、データからJSONArrayを構築し、解析を開始します。以下は、(修正されたデータセットを使用)例のコードスニペットです:「[」と「]」あなたはそれが始まりで終わるているわかっている場合

String strJSONData = "[{\"nid\":\"1\",\"title\":\"test\"},{\"nid\":\"6\",\"title\":\"A\"}]"; 
final String CONS_NID = "nid"; 
final String CONS_TITLE = "title"; 
try { 
    JSONArray ja = new JSONArray(strJSONData); 
    if (ja != null) { 
     JSONObject arrObj; 
     for (int i = 0; i < ja.length(); i++) { 
     arrObj = (JSONObject) ja.get(i); 
     if (arrObj.has(CONS_NID)) { 
       System.out.println("ID: " + arrObj.getString(CONS_NID)); 
     } 
     if (arrObj.has(CONS_TITLE)) { 
      System.out.println("Title: " + arrObj.getString(CONS_TITLE)); 
     } 
     } 
     arrObj = null; 
    } 
    ja = null; 
} catch (Exception exc) { 
} 
strJSONData = null; 
0

、あなたはちょうどそれをチェックして、間に部分文字列を取ることができますそれをパーサーに渡してください。

String myJsonString = ...; 
if(myJsonString.charAt(0) == '[' && myJsonString.charAt(myJsonString.length() - 1) == ']') { 
    realJsonParse(myJsonString.substring(1, myJsonString.length() - 1); 
} 
関連する問題