2016-11-26 1 views
2

JSON 형식의 webservice를 사용하여 MySql DB를 온라인 서버에서 가져 와서 문자열을 가져옵니다. Android Studio가 디버깅 모드에서 볼 때 Android Studio가 올바르게 페치하고 있음을 알 수 있습니다. 하지만 목록 목록에 추가하면 아무 것도 얻지 못합니다.빈을주는 jsonObject.getString ("String in UTF8")

여기에 좀 더 정보입니다 : 내가 점점 오전 : "veg_name_hindi": "मक्का"

내가 진행하고있는 DataItem에 넣어하려고

{"products":[{"veg_name_eng":"Corn","veg_name_hindi":"मक्का"}],"success":1} 

내 관심사는 함께 목록에서 아무것도 얻지 못합니다.

public static List<DataItem> dataItemList; 
dataItemList.add(jsonObject.getString(veg_name_eng),jsonObject.getString(veg_name_hindi)) 

veg_name_eng 및 veg_name_hindi는 내 테이블의 열 이름입니다.

위의 코드 다음에 dataItemList = null이 표시되므로 아무 것도 추가하지 않습니다.

내 서버 측 MySql DB에서 UTF-8 인코딩을 사용하고 있습니다.

나는 android studio를 사용하고 있습니다.

UPDATE 1 :

나는대로 JSON을 구문 분석하고 있습니다 :

JSONObject jsonObject = new JSONObject(myJSONString); 
veg_list = jsonObject.getJSONArray("products"); 
try { 
    while (TRACK < veg_list.length()) { 
     JSONObject jsonObject = veg_list.getJSONObject(TRACK); 
     addItem(new DataItem(jsonObject.getString(veg_name_eng), jsonObject.getString(veg_name_hindi))); 
     TRACK = TRACK + 1; 
    } 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

//과 addItem를 기능은 다음과 같다 : 첫째

private static void addItem(DataItem item) { 
    dataItemList.add(item); //While Debugging, I can see that value of item is correct. (i.e., item: DataItem{veg_name_eng='Cork', veg_name_hindi='मक्का'}) 
    dataItemMap.put(item.getVeg_id(), item); 
} 
+0

[json_encode 오류 확인] (http://stackoverflow.com/documentation/php/617/json/2637/debugging-json-errors)을 수행 했습니까? – Machavity

+0

나는 지금 당장 그것을 점검했다. 오류가 없다. 온라인 DB의 PHP 스크립트가 잘 돌아가고 올바른 o/p를 반환하고있다. –

답변

0

의 모델을 확인 귀하의 JSON 문자열을 사용하여

http://json2java.azurewebsites.net/

다음에 Gson을 사용하여 JSON String을 모델에 매핑하십시오. 사용하기가 훨씬 쉽습니다.

이 특정 결과에 필요한 String을 얻는 또 다른 방법은 json 문자열을 직접 파싱하는 것입니다. 예를 들어

:

String vegNameEng,vegNameHindi; 

vegNameEng = vegNameHindi = ""; 

try{ 
    JSONObject obj = new JSONObject(yourJsonString); 
    JSONArray arr = obj.getJSONArray("products"); 
    vegNameEng = arr.getJSONObject(0).getString("veg_name_eng"); 
    vegNameHindi = arr.getJSONObject(0).getString("veg_name_hindi"); 
}catch(JSONException ex){ 

} 

이제 vegNameEng 및 vegNameHindi는 필요한 데이터를 가지고있다.

+0

이미 JSON 문자열에 모델을 사용하고 있었고이를 위해 DataItem.java라는 클래스를 만들었습니다. Gson을 시도 할 것입니다 .. –

+0

한번 시도해보십시오. 너는 그것을 얻을 것이다. 또는 대체 솔루션을 사용해보십시오. 위 코드를 yourJsonString과 함께 사용하면 해당 필드에 데이터가 저장됩니다. –

+0

또한 @ Umer-Farooq 비슷한 방식으로 json을 파싱했습니다. 자세한 내용은 주 스레드에서 Update 1을 확인하십시오.) –

0

저는 바보 같은 실수였습니다. 데이터를 데이터베이스에 저장하는 데 사용 된 변수가 동일한 이름의 다른 변수로 덮어 쓰여졌습니다. 지금 스레드를 닫습니다. @ Umer-Farooq에게 감사합니다.