【问题标题】:How to access java.lang.Object json value in JAVA?如何在 JAVA 中访问 java.lang.Object json 值?
【发布时间】:2018-07-08 18:01:24
【问题描述】:

我有这个代码和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);

    }

【问题讨论】:

标签: java android json


【解决方案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());
    }
}

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


编辑:
你的错误:

E/ERROR: {id=830, 字符 73 处的预期文字值, disc_id=789, disc_size=小, price=21, weight=350, promo_price=, disc_num_for_promo=0

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

【讨论】:

  • 出现此错误 E/错误:{id=830, disc_id=789, disc_size=Small, price=21, weight=350, promo_price=, discs_num_for_promo=0} 的字符 73 处的预期文字值
  • tempObj 变量是 java.lang.Object
  • @UmashankarSaw :: JSON 字符串似乎存在问题。键“promo_price”没有价值! "promo_price=,"
  • @UmashankarSaw :: 你有没有机会看看你为什么会收到错误的解释。如果您需要任何帮助,请告诉我。
【解决方案2】:

您可以通过强制转换对象来构造JSONObject

JSONObject json = (JSONObject) tempObj;

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

例如你这样做:

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

获取对象的id。

【讨论】:

    【解决方案3】:

    您将Object 转换为JSONObject 以从该Json 中提取值。

    JSONObject json = (JSONObject) tempObj;
    

    然后你可以通过简单的方法来解析Json,比如

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

    【讨论】:

    • 这与@NiVeR 提供的答案有何不同?
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2023-03-28
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多