Я получаю строку из моей базы данных MySql на онлайн-сервере, используя веб-сервис в формате JSON. Я вижу, что Android Studio загружает его правильно, поскольку я вижу это в режиме отладки. Но когда я добавляю его в список List, я ничего не получаю.

Вот еще немного информации: Что я получаю:

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

Меня беспокоит: "veg_name_hindi": "मक्का"

Когда я пытаюсь добавить его в список элементов данных, я ничего не получаю:

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 на стороне сервера я использую кодировку UTF-8.

Я использую студию Android.

ОБНОВЛЕНИЕ 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);
}
2
user4516335 26 Ноя 2016 в 06:54

2 ответа

Лучший ответ

Во-первых, создайте модель своей строки JSON, используя

http://json2java.azurewebsites.net/

А затем сопоставьте строку JSON с моделью с помощью Gson . Его очень легко использовать.

Другой способ получить требуемую строку для этого конкретного результата - самостоятельно проанализировать строку 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
Muhammad Umer Farooq 26 Ноя 2016 в 04:58

Я понял, это была глупая ошибка, переменная, которую я использовал для ввода данных в базу данных, была перезаписана какой-то другой переменной с тем же именем. На данный момент закрываю тему. Спасибо @ Umer-Farooq.

0
user4516335user4516335 26 Ноя 2016 в 06:31