如何在JAVA中访问java.lang.Object json值?

时间:2018-07-08 18:01:24

标签: java android json

我有这段代码,System.out.println(tempObj);打印了这个json(I/System.out: {id=830, dish_id=789, dish_size=Small, price=21, weight=350, promo_price=, dishes_num_for_promo=0}),能帮我如何在JAVA Android中访问这些json值吗?

for(int i=0; i<disSizes.length; i++ ){
        Object tempObj =  disSizes[i];

        System.out.println(disSizes);
        System.out.println(tempObj);

    }

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码来解析JSONObject:

private void parseDishData(JSONObject jsonObj){
    try{
        int dishId = jsonObj.optInt("dish_id", -1);
        String disSizes = jsonObj.optString("dish_size", "NA");
        String price = jsonObj.optString("price", "NA");
        Log.e("MyDishData", "dishId = " + dishId + " disSizes = " +  disSizes)
    }
    catch(Exception ex){
        Log.e("ERROR", ex.getMessage());
    }
}

或者,如果您有String,则可以使用以下代码来解析JSON字符串:

private void parseDishData(String json){
    try{
        JSONObject jsonObj = new JSONObject(json);
        int dishId = jsonObj.optInt("dish_id", -1);
        String disSizes = jsonObj.optString("dish_size", "NA");
        String price = jsonObj.optString("price", "false");
        Log.e("MyDishData", "dishId = " + dishId + " disSizes = " +  disSizes)
    }
    catch(Exception ex){
        Log.e("ERROR", ex.getMessage());
    }
}

只需将parseDishData方法传递给JSON字符串即可。


编辑:
您的错误:

  

E / ERROR:{id = 830,字符73处的预期文字值,   dish_id = 789,dish_size = Small,price = 21,weight = 350,promo_price =,   dishs_num_for_promo = 0

您收到上述错误,因为JSON字符串似乎有问题。关键字“ promo_price”没有价值! “ promo_price =”。例如,应该有一个值:“ promo_price = 10”。

答案 1 :(得分:0)

您可以通过投射对象来构造JSONObject

JSONObject json = (JSONObject) tempObj;

现在,您可以根据要从中获取数据的类型,使用JSONObject类中的适当的吸气剂来访问属性。

例如,您这样做:

int id = json.getInt("id");

获取对象的ID。

答案 2 :(得分:0)

您将把Object强制转换为JSONObject,以从此Json中提取值。

JSONObject json = (JSONObject) tempObj;

然后您可以通过简单的方法解析Json

String promo_price = json.getString("promo_price");