jsonObject.getString(“UTF8中的字符串”)给出空白

时间:2016-11-26 03:54:25

标签: php android mysql json utf-8

我使用JSON格式的webservice从我的MySql DB和在线服务器上获取字符串。 当我在调试模式下看到它时,我能够看到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 DB中,我使用的是UTF-8编码。

我正在使用android studio。

更新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 个答案:

答案 0 :(得分:0)

首先,使用

创建一个JSON字符串的模型

http://json2java.azurewebsites.net/

然后使用 Gson 将您的JSON字符串映射到您的模型。它易于使用。

获取此特定结果所需字符串的另一种方法是自己解析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拥有所需的数据。

答案 1 :(得分:0)

我发现,这是一个愚蠢的错误,我用来将数据放入数据库的变量被其他一些同名变量覆盖。暂时关闭线程。谢谢@ Umer-Farooq。