Java 在Android上从json解码url

Java 在Android上从json解码url,java,android,Java,Android,从Rest API中,我获得以下格式的json数据: [ { "id": "1", "item": "tea", "price": "7.5", "image": "http:\/\/192.168.1.3\/CI\/images\/tea.jpg", "veg": "0", "category": "drinks" }, { "id": "2",

从Rest API中,我获得以下格式的json数据:

[
    {
        "id": "1",
        "item": "tea",
        "price": "7.5",
        "image": "http:\/\/192.168.1.3\/CI\/images\/tea.jpg",
        "veg": "0",
        "category": "drinks"
    },
    {
        "id": "2",
        "item": "coffee",
        "price": "10",
        "image": "http:\/\/192.168.1.3\/CI\/images\/coffee.jpg",
        "veg": "0",
        "category": "drinks"
    }
]
从API中,我将Json作为字符串获取,它在url的前斜杠前面包含反斜杠,这符合Json编码规范。我能够正确地对json_进行解码并从php获取url。在android中,我将json字符串存储在名为“menu_json”的变量中

然后,我尝试使用以下代码解析并从中获取图像url:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
try{
    JSONObject menuApiObj = new JSONObject(menu_json);
    JSONArray menuObj = menuApiObj.getJSONArray("menu");
    for (int i = 0; i < menuObj.length(); i++){
        JSONObject row = menuObj.getJSONObject(i);
        rowString = row.getString("image");
        imageUrl = row.toString();
        Log.e("rowString", rowString);
        Log.e("imageUrl", imageUrl);
}
图像字段应为:

http://192.168.1.3/CI/images/tea.jpg
但我得到的只是:

tea.jpg
当json_在PHP中解码API响应时,我得到正确解码的url。但在安卓系统中,我无法在图像字段中获得正确解码的url

请帮忙

以下是完整的API响应:

{"menu":[{"id":"1","item":"tea","price":"7.5","image":"tea.jpg","veg":"0","category":"drinks"},{"id":"2","item":"cofee","price":"10","image":"coffee.jpg","veg":"0","category":"drinks"},{"id":"3","item":"crispy chicken","price":"160","image":"crispy-chicken.jpg","veg":"0","category":"curries"}],"cat_wise":[{"category":"drinks","items":[{"id":"1","item":"tea","price":"7.5","image":"http:\/\/192.168.1.3\/CI\/images\/tea.jpg","veg":"0","category":"drinks"},{"id":"2","item":"cofee","price":"10","image":"http:\/\/192.168.1.3\/CI\/images\/coffee.jpg","veg":"0","category":"drinks"}]},{"category":"curries","items":[{"id":"3","item":"crispy chicken","price":"160","image":"http:\/\/192.168.1.3\/CI\/images\/crispy-chicken.jpg","veg":"0","category":"curries"}]},{"category":"main","items":[]}]}

我不确定您使用的是什么Json库,但它看起来像
org.Json
。我认为你的代码看起来很正常,所以我实现了它,但没有看到你看到的输出。我的猜测是,您的输入数据并不是您所期望的

final JSONArray menuObj = new JSONArray("[\n" +
        "    {\n" +
        "        \"id\": \"1\",\n" +
        "        \"item\": \"tea\",\n" +
        "        \"price\": \"7.5\",\n" +
        "        \"image\": \"http://192.168.1.3/CI/images/tea.jpg\",\n" +
        "        \"veg\": \"0\",\n" +
        "        \"category\": \"drinks\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"id\": \"2\",\n" +
        "        \"item\": \"coffee\",\n" +
        "        \"price\": \"10\",\n" +
        "        \"image\": \"http://192.168.1.3/CI/images/coffee.jpg\",\n" +
        "        \"veg\": \"0\",\n" +
        "        \"category\": \"drinks\"\n" +
        "    }\n" +
        "]");
for (int i = 0; i < menuObj.length(); i++){
    final JSONObject row = menuObj.getJSONObject(i);
    System.out.println("imageUrl: " +  row.getString("image"));
    System.out.println("rowString: " +  row);
}
final JSONArray menuObj=新的JSONArray(“[\n”+
“{\n”+
“id\:\“1\,\n”+
“\'item\:\'tea\,\n”+
“价格”:“7.5”,\n+
“\”图像\“:\”http://192.168.1.3/CI/images/tea.jpg\“,\n”+
“蔬菜”:“0\,\n”+
“\”类别\“:\”饮料\“\n”+
},\n+
“{\n”+
“\'id\':\'2\',\n”+
“\”项目\“:\”咖啡\“,\n”+
“价格”:“10\,\n”+
“\”图像\“:\”http://192.168.1.3/CI/images/coffee.jpg\“,\n”+
“蔬菜”:“0\,\n”+
“\”类别\“:\”饮料\“\n”+
“}\n”+
"]");
对于(int i=0;i
输出:

imageUrl:行字符串: {“图像”:“项目”:“茶”,“价格”:“7.5”,“蔬菜”:“0”,“id”:“1”,“类别”:“饮料”} imageUrl:行字符串: {“图像”:“项目”:“咖啡”,“价格”:“10”,“蔬菜”:“0”,“id”:“2”,“类别”:“饮料”}


我不确定您使用的是什么Json库,但它看起来像
org.Json
。我认为你的代码看起来很正常,所以我实现了它,但没有看到你看到的输出。我的猜测是,您的输入数据并不是您所期望的

final JSONArray menuObj = new JSONArray("[\n" +
        "    {\n" +
        "        \"id\": \"1\",\n" +
        "        \"item\": \"tea\",\n" +
        "        \"price\": \"7.5\",\n" +
        "        \"image\": \"http://192.168.1.3/CI/images/tea.jpg\",\n" +
        "        \"veg\": \"0\",\n" +
        "        \"category\": \"drinks\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"id\": \"2\",\n" +
        "        \"item\": \"coffee\",\n" +
        "        \"price\": \"10\",\n" +
        "        \"image\": \"http://192.168.1.3/CI/images/coffee.jpg\",\n" +
        "        \"veg\": \"0\",\n" +
        "        \"category\": \"drinks\"\n" +
        "    }\n" +
        "]");
for (int i = 0; i < menuObj.length(); i++){
    final JSONObject row = menuObj.getJSONObject(i);
    System.out.println("imageUrl: " +  row.getString("image"));
    System.out.println("rowString: " +  row);
}
final JSONArray menuObj=新的JSONArray(“[\n”+
“{\n”+
“id\:\“1\,\n”+
“\'item\:\'tea\,\n”+
“价格”:“7.5”,\n+
“\”图像\“:\”http://192.168.1.3/CI/images/tea.jpg\“,\n”+
“蔬菜”:“0\,\n”+
“\”类别\“:\”饮料\“\n”+
},\n+
“{\n”+
“\'id\':\'2\',\n”+
“\”项目\“:\”咖啡\“,\n”+
“价格”:“10\,\n”+
“\”图像\“:\”http://192.168.1.3/CI/images/coffee.jpg\“,\n”+
“蔬菜”:“0\,\n”+
“\”类别\“:\”饮料\“\n”+
“}\n”+
"]");
对于(int i=0;i
输出:

imageUrl:行字符串: {“图像”:“项目”:“茶”,“价格”:“7.5”,“蔬菜”:“0”,“id”:“1”,“类别”:“饮料”} imageUrl:行字符串: {“图像”:“项目”:“咖啡”,“价格”:“10”,“蔬菜”:“0”,“id”:“2”,“类别”:“饮料”}

要解析JSON数组,请执行以下操作:

    JSONArray jArray = jObject.getJSONArray("menu");

     for (int i = 0; i < jArray.length(); i++) {
       JSONObject innerjObject =jArray.getJSONObject(i);
       String image =innerjObject.getString("image");
       array_list.add(image);
     }
JSONArray jArray=jObject.getJSONArray(“菜单”);
for(int i=0;i
输出:

要将此图像显示到imageview,请使用库:

编译'com.nostra13.universalimageloader:universalimageloader:1.9.5'

使用imageview中库load image的Loadimagview方法解析JSON数组:

    JSONArray jArray = jObject.getJSONArray("menu");

     for (int i = 0; i < jArray.length(); i++) {
       JSONObject innerjObject =jArray.getJSONObject(i);
       String image =innerjObject.getString("image");
       array_list.add(image);
     }
JSONArray jArray=jObject.getJSONArray(“菜单”);
for(int i=0;i
输出:

要将此图像显示到imageview,请使用库:

编译'com.nostra13.universalimageloader:universalimageloader:1.9.5'


在imageview中使用library load image的Loadimagview方法显示完整的JSON数据。
menuApiObj.getJSONArray(“菜单”)
是什么意思?给定的JSON数据中没有这样的数组,请显示完整的JSON数据。
menuApiObj.getJSONArray(“菜单”)
是什么意思?在给定的JSON数据中没有这样的数组,是的,我正在使用org.jsonOh,我感到沮丧,并仔细查看了API响应。看起来json中的“菜单”不包含完整的URL,只有“cat_-wise”菜单包含完整的图像URL。非常感谢你的帮助。非常感谢。是的,我正在使用org.jsonOh,我感到很沮丧,并仔细查看了API响应。看起来json中的“菜单”不包含完整的URL,只有“cat_-wise”菜单包含完整的图像URL。非常感谢你的帮助。非常感谢你。