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.