Saltar al contenido

GSON. Cómo convertir un objeto json a json array?

Haz todo lo posible por comprender el código de forma correcta antes de adaptarlo a tu proyecto y si tquieres aportar algo puedes dejarlo en la sección de comentarios.

Solución:

Espero que esta parte del código te ayude:

    String json = ""supplyPrice": n" +
            "        "CAD": 78,n" +
            "        "CHF": 54600.78,n" +
            "        "USD": 20735.52n" +
            "      ";

    Gson gson = new Gson();
    JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
    JsonObject supplyPrice = jsonObject.get("supplyPrice").getAsJsonObject();
    Type type = new TypeToken>() 
    .getType();
    HashMap parsedJson = gson.fromJson(supplyPrice, type);
    JsonArray jsonArray = new JsonArray();
    for(String key : parsedJson.keySet()) 
        JsonObject jo = new JsonObject();
        jo.addProperty("name", key);
        jo.addProperty("value", parsedJson.get(key));
        jsonArray.add(jo);
    
    JsonObject result = new JsonObject();
    result.add("supplyPrice", jsonArray.getAsJsonArray());

Necesitas iterar todo keys del objeto supplyPrice, y crea New JSONArray usando ese key valor luego asignar nuevo array para suministrarPrecio key

JSONObject changeSupplyPrice(JSONObject JSONObj)
    try 
        JSONObject supplyPrice =JSONObj.getJSONObject("supplyPrice");
        JSONArray supplyPriceArray = new JSONArray();
        Iterator keys = supplyPrice.keys();

        while( keys.hasNext() ) 
            String key = (String)keys.next();
            Log.e("JSON Array key",key);
            supplyPriceArray.put(new JSONObject(""+key+":"+supplyPrice.getString(key)+""));

        
        JSONObj.put("supplyPrice", supplyPriceArray);
        return JSONObj;
     catch (JSONException e) 
        e.printStackTrace();
    
    return null;

luego llama a la función donde quieras

try 
        JSONObject JSONObj = new JSONObject("'taxes': [],'name': 'Laboriosam iusto eum','requiresShipping': false,  'taxable': true,  'sku': 'QBA84J18832',  'product': 12, 'supplyPrice':     'CAD': 78,   'CHF': 54600.78,    'USD': 20735.52  ");
        JSONObj = changeSupplyPrice(JSONObj);
        Log.e("Return JSON Object",JSONObj.toString());
     catch (JSONException e) 
        e.printStackTrace();
    

GSON usa clases POJO para analizar JSON en objetos Java.

Cree una clase Java que contenga variables con nombres y tipos de datos iguales a keys del objeto JSON. Creo que el JSON que está obteniendo no está en el formato correcto.

Class SupplyPrice
 double CAD;
 double CHF;
 double TRY


Class SupplyPriceContainer
 ArrayList supplyPrice;

Y tu JSON debería ser

 
    "CAD": 78,
    "CHF": 54600.78,
    "USD": 20735.52
 




    "supplyPrice": [
        "CAD": 78,
        "CHF": 0,
        "USD": 0
    , 
        "CAD": 0,
        "CHF": 54600.00,
        "USD": 0
    , 
        "CAD": 0,
        "CHF": 0,
        "USD": 20735.52
    ]
 

Luego puede usar `fromJson (String pJson, Class pClassType) de GSON para convertir a un objeto JAVA

  Gson gson = new Gson()
  ArrayList suplyPrices = gson.fromJson(pJsonString, SupplyPrice.class);

Ahora puede usar la lista de arreglos para obtener los datos.

Reseñas y calificaciones

Agradecemos que desees añadir valor a nuestro contenido contribuyendo tu veteranía en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *