使用非数字键动态循环json

时间:2017-04-25 01:26:46

标签: java android json

我有这个json:

{"produtos": {
    "Su\u00edte Master": {
        "variacao": {
            "variationcustom1bla": {
                "descricao": "2\u00aa a 6\u00aa - 1h",
                "preco": "60.00",
                "percentual": "0.00"
            },
            "variationcusstom1bla": {
                "descricao": "2\u00aa a 6\u00aa - 2h",
                "preco": "70.00",
                "percentual": "0.00"
            },

        }
    },
    "Suitetematica": {
        "variacao": {
            "variation bla2 custom bla2": {
                "descricao": "3\u00aa at\u00e9 5\u00aa as 18h - 2h",
                "preco": "99.00",
                "percentual": "20.00"
            },
            "Pernoites": {
                "descricao": "Pernoites",
                "preco": "149.00",
                "percentual": "5.00"
            }
        }
    }
}
}
try {
    JSONObject produtos = new JSONObject(json);
    JSONArray produtosArr = produtos.getJSONArray("produtos");
} catch (JSONException e) {
    // JSON error
    e.printStackTrace();
}

如何使用JSONObject()来浏览这个json?它返回了这个错误:

在org.json.JSONObject类型的produtos中无法转换为JSONArray      ;

2 个答案:

答案 0 :(得分:0)

JSONObject produtos= new JSONObject(json);
JSONObject object = produtos.optJSONObject("produtos");

答案 1 :(得分:-1)

你必须使用JSONObject来解析Json,因为这个json没有Array元素。如果你试图使用JSONArray解析这个json,它会显示错误消息 org.json.JSONObject无法转换到JSONArray

您可以查看代码:

    String jsonString  = "{\"produtos\":{\"Suíte Master\":{\"variacao\":{\"variationcustom1bla\":{\"descricao\":\"2ª a 6ª - 1h\",\"preco\":\"60.00\",\"percentual\":\"0.00\"},\"variationcusstom1bla\":{\"descricao\":\"2ª a 6ª - 2h\",\"preco\":\"70.00\",\"percentual\":\"0.00\"},\"variationssscustom1bla\":{\"descricao\":\"2ª a 6ª - 3h\",\"preco\":\"80.00\",\"percentual\":\"0.00\"},\"variatissssoncustom1bla\":{\"descricao\":\"Pernoite: de 21h até as 14h\",\"preco\":\"130.00\",\"percentual\":\"0.00\"}}},\"Suitetematica\":{\"variacao\":{\"variation bla2 custom bla2\":{\"descricao\":\"3ª até 5ª as 18h - 2h\",\"preco\":\"99.00\",\"percentual\":\"20.00\"},\"Pernoites\":{\"descricao\":\"Pernoites\",\"preco\":\"149.00\",\"percentual\":\"5.00\"}}}}}";
    try {
        JSONObject rootJObj  =  new JSONObject(jsonString) ;

        JSONObject jProdutos = rootJObj.getJSONObject("produtos") ;
        JSONObject suOBj1  = jProdutos.getJSONObject("Suíte Master");

        JSONObject variacaoJObj =  suOBj1.getJSONObject("variacao");
        JSONObject  varJObj1  =  variacaoJObj.getJSONObject("variationcustom1bla");
        String descricao1 =  varJObj1.getString("descricao");
        String preco1 =  varJObj1.getString("preco");
        String percentual1 =  varJObj1.getString("percentual");
        JSONObject  varJObj2  =  variacaoJObj.getJSONObject("variationcustom1bla");
        String descricao2 =  varJObj2.getString("descricao");
        String preco2 =  varJObj2.getString("preco");
        String percentua2 =  varJObj2.getString("percentual");
        JSONObject  varJObj3  =  variacaoJObj.getJSONObject("variationcustom1bla");
        String descricao3 =  varJObj3.getString("descricao");
        String preco3 =  varJObj3.getString("preco");
        String percentual3 =  varJObj3.getString("percentual");

        JSONObject  varJObj4  =  variacaoJObj.getJSONObject("variationcustom1bla");
        String descricao4 =  varJObj4.getString("descricao");
        String preco4 =  varJObj4.getString("preco");
        String percentual4 =  varJObj4.getString("percentual");
        JSONObject suOBj2  = jProdutos.getJSONObject("Suitetematica");
        JSONObject vaJsonObject = suOBj2.getJSONObject("variacao");
        JSONObject varBla2 = vaJsonObject.getJSONObject("variation bla2 custom bla2");
        String descricao5 =  varBla2.getString("descricao");
        String preco5 =  varBla2.getString("preco");
        String percentua5 =  varBla2.getString("percentual");
        JSONObject Pernoites = vaJsonObject.getJSONObject("Pernoites");
        String descricao6 =  Pernoites.getString("descricao");
        String preco6 =  Pernoites.getString("preco");
        String percentua6 =  Pernoites.getString("percentual");

    } catch (JSONException e) {
        e.printStackTrace();
    }
}

这可能有助于正确理解。