2017-03-05 22 views
1

値を取得するjson文字列があります。これは鍵ペア形式であるため、各鍵の値が必要です。json Stringから値を取得する方法

値を取得しようとしましたが、取得できません。

JSON文字列は次のようである:

JSONArray array; 
if(mIntent.getStringExtra("jsonString") != null) { 
      Log.d("json", mIntent.getStringExtra("jsonString")); 

     try { 
      JSONObject object = new JSONObject(mIntent.getStringExtra("jsonString")); 

      array = object.getJSONArray("field"); 

      for (int i = 0; i < array.length(); i++) { 
       JSONObject subObject1 = array.getJSONObject(i); 

       edt_FirstName.setText(object.getString("Name")); 
      } 

     } catch (JSONException e) { 

} 

{ 
    "document": { 
     "xmlns:xsi": "http:\/\/www.w3.org\/2001\/XMLSchema-instance", 
     "xsi:schemaLocation": "http:\/\/ocrsdk.com\/schema\/recognizeard-1.0.xsd http:\/\/ocrsdk.com\/schema\/recognized-1.0.xsd", 
     "xmlns": "http:\/\/ocrsdk.com\/schema\/recognize-1.0.xsd", 
     "businessCard": { 
      "imageRotation": "noRotation", 
      "field": 

       [{ 
       "type": "Name", 
       "value": "Rafcev B. Agnrwal" 
      }, { 
       "type": "Company", 
       "value": "VJ>" 
      }, { 
       "type": "Text", 
       "value": "Dr. Rafcev B. Agnrwal\nMOB 0324%\nun\n) AOM*. founts. sso\nVJ>\nT" 
      }] 
     } 
    } 
} 

は私がこのように取得しようとした

など "名前"、 "住所"、 "会社" の値を取得したいです

誰も私を助けてくれますか?ありがとう...

編集:私はこのような値を確認しようとした

   for (int i = 0; i < array.length(); i++) { 
        JSONObject subObject1 = array.getJSONObject(0); 

        String type = subObject1.getString("type"); 
        String value = subObject1.getString("value"); 
        if (type.equals("Name")) { 
         edt_FirstName.setText(value); 
        } 
        if(type.equals("Address")) 
        { 
         edt_address.setText(value); 
        } 
        if(type.equals("Company")) 
        { 
         edt_company.setText(value); 
        } 
        if(type.equals("Mobile")) 
        { 
         edt_Mobile.setText(value); 
        } 


       } 
私は、フィールドの配列からすべての値を取得し、テキストビューに設定したい

が、私は取得しています名前値のみであり、他の値ではありません。

また、私はモバイルのように2回得ることができるように1つのフィールドを得ることができたので、両方のモバイル値を結合して表示します。

答えて

2

だからあなたのJSONオブジェクトは以下の通りです:

{ 
    "document": { 
     "xmlns:xsi": "http:\/\/www.w3.org\/2001\/XMLSchema-instance", 
     "xsi:schemaLocation": "http:\/\/ocrsdk.com\/schema\/recognizeard-1.0.xsd http:\/\/ocrsdk.com\/schema\/recognized-1.0.xsd", 
     "xmlns": "http:\/\/ocrsdk.com\/schema\/recognize-1.0.xsd", 
     "businessCard": { 
      "imageRotation": "noRotation", 
      "field": 

       [{ 
       "type": "Name", 
       "value": "Rafcev B. Agnrwal" 
      }, { 
       "type": "Company", 
       "value": "VJ>" 
      }, { 
       "type": "Text", 
       "value": "Dr. Rafcev B. Agnrwal\nMOB 0324%\nun\n) AOM*. founts. sso\nVJ>\nT" 
      }] 
     } 
    } 
} 

あなたはJSONObjectとして「文書」を取得し、JSONObjectとして「名刺」を取得し、あなたがJSONArrayとして「フィールド」を得ることができた最初の必要性:

if(mIntent.getStringExtra("jsonString") != null) { 
    Log.d("json", mIntent.getStringExtra("jsonString")); 

    try { 
     JSONObject object = new JSONObject(mIntent.getStringExtra("jsonString")); 

     JSONArray array = object.getJSONObject("document").getJSONObject("businessCard").getJSONArray("field"); 

     for (int i = 0; i < array.length(); i++) { 
      JSONObject subObject = array.getJSONObject(i); 

      String type = subObject.getString("type"); 
      String value = subObject.getString("value"); 
      if (type.equals("Name")) { 
        String prevValue = edt_FirstName.getText(); 
        edt_FirstName.setText((TextUtils.isEmpty(prevValue) ? "" : prevValue + ",") + value); 
      } 
     } 

    } catch (JSONException e) { } 
} 
+0

フィールド配列からの値の取得方法は? – Sid

+0

@Sid詳しくは – manman

+0

で編集してください。 – Sid

1

このコードを試してみてください。

try 
{ 
    JSONObject jsonObject = new JSONObject(); 
    JSONObject documentObject = jsonObject.getJSONObject("document"); 
    JSONObject businessCardObject = documentObject.getJSONObject("businessCard"); 

    String imgRotation = businessCardObject.getString("imageRotation"); 
    JSONArray array = businessCardObject.getJSONArray("field"); 

    for (int i = 0; i < array.length() ; i++) 
    { 
     JSONObject arrObj = array.getJSONObject(i); 

     String type = arrObj.getString("type"); 
     String value = arrObj.getString("value"); 

     Log.e(TAG, "type=="+type); 
     Log.e(TAG, "value=="+value); 
    } 
} 
catch (Exception ex) 
{ 
    ex.printStackTrace(); 
} 
関連する問題