JSONObject data = response.getJSONObject("data");

            Iterator x = data.keys();
            JSONArray jsonArray = new JSONArray();

            while (x.hasNext()){
              String key = (String) x.next();
              jsonArray.put(data.get(key));
            }
            Log.d("TZX", String.valueOf(jsonArray));

Tengo JSONObject en datos variables como este

{"type":"DISKON","result":"DUPE","data":{"1":{"Code":"DISC2","Description":"DISC SALES","Value":0},"2":{"Code":"DISC1.5%","Description":"DISC1.5%","Value":1.5},"3":{"Code":"DISC 2%","Description":"DISC 2%","Value":2}}}

Cómo obtengo el objeto "Valor" en JSONObject para enviarlo a JSONArray en la variable "jsonArray"

Perdón por mi gramática y soy novato 谢谢

-1
한명훈 陳麤亮 28 feb. 2018 a las 06:39

3 respuestas

La mejor respuesta

Prueba esto,

JSONObject data = response.getJSONObject("data");
JSONArray jsonArray = new JSONArray();

Iterator<?> keys = data.keys();

while (keys.hasNext()) {
    String key = (String) keys.next();
    if (data.get(key) instanceof JSONObject) {
        jsonArray.put(((JSONObject) data.get(key)).getString("Value"));
    }
}
Log.e("TZX", String.valueOf(jsonArray));
2
V-rund Puro-hit 28 feb. 2018 a las 04:53

Está teniendo una matriz, así que use JsonArray directamente para analizar los datos como en

JSONArray array = response.getJSONArray("data");
List<Integer> values = new ArrayList<>();
   for(int i=0;i < array.length();i++){
        values.add(array.getJSONObject(i).getInt("Value"));
   }
0
rajan ks 28 feb. 2018 a las 03:45

Su variable data no es JSONObject es JSONArray.

data = [{"Code":"DISC2","Description":"DISC SALES","Value":0},{"Code":"DISC1.5%","Description":"DISC1.5%","Value":1.5},{"Code":"DISC 2%","Description":"DISC 2%","Value":2}]

Para obtener JSONObject de la matriz

JSONArray list = new JSONArray();
JSONObject obj = new JSONObject(data)
JSONArray jsonArray = new JSONArray(obj);

for(int i=0;i<json.length();i++){
    JSONObject e = jsonArray.getJSONObject(i);
    String value = e.getString("Value"));
    list.put(value);
}
0
Md Tanbir Hossen 28 feb. 2018 a las 04:32