GSON Can I convert only part of JSON, the ones I want Using GSON.fromJSON()
Tag : java , By : appdelivery
Date : March 29 2020, 07:55 AM
Hope this helps I don't know if I understand your question very well, but in order to deserialize a JSON response with Gson, the most proper way in my opinion is to create a class structure that encapsulates the data in the response. In your case something like: class Response
MainDocument mainDocument
class MainDocument
Element element1
Element element2
class Element
...
class Response
MainDocument mainDocument
Error error
JsonParser parser = new JsonParser();
JsonObject rootObj = parser.parse(jsonString).getAsJsonObject();
String element21121 = rootObj
.getAsJsonObject("mainDocument")
.getAsJsonObject("element2")
.getAsJsonObject("element21")
.getAsJsonObject("element211")
.getAsJsonObject("element2112")
.getAsString("element21121");
|
why doesn't valgrind detect excess elements in arrays
Date : March 29 2020, 07:55 AM
around this issue Your array is stored in stack area and Valgrind checks for the leak in heap area.It check for leak of memory allocated by dynamic allocation so you are not getting any detection by Valgrind. If you really want to see the effect then use bellow code int main()
{
int *p=malloc(6);
}
|
Gson stackoverflow Gson.fromJson
Tag : java , By : Ronnie Carlin
Date : March 29 2020, 07:55 AM
To fix this issue When i validate ur given json it have some error (The Example Json give is not a valid json).Your json have " in elementos array before opening and close ,maybe that causing a stack overflow error when you try to parse the json using Gson. {
"atributos": {
"id": "1",
"nombre": "Cliente",
"descripcion": "Cliente",
"version": "1"
},
"elementos": [
{
"id": "1",
"name": "akira"
},
{
"id": "4",
"name": "akira"
},
{
"id": "5",
"name": "akira"
},
{
"id": "6",
"name": "akira"
},
{
"id": "7",
"name": "akira"
},
{
"id": "8",
"name": "akira"
},
{
"id": "9",
"name": "akira"
},
{
"id": "10",
"name": "akira"
},
{
"id": "11",
"name": "akira"
},
{
"id": "12",
"name": "akira"
},
{
"id": "13",
"name": "akira"
},
{
"id": "14",
"name": "akira"
},
{
"id": "15",
"name": "akira"
},
{
"id": "16",
"name": "akira"
},
{
"id": "17",
"name": "akira"
},
{
"id": "18",
"name": "akira"
}
]
}
public class JsonResponse {
/*Class handle the Whole json*/
//Variable name should be same as the names given in the json response
Atributos atributos;// Attributos class handles the data in atributos obj from the json . The variable name of Attributos should be same as the json objects ie atributos
ArrayList<ElementosObj>elementos=null;//elementos is a array which hold some datas ,so make a class ElementosObj to handle the data in the elementos array.
}
public class Atributos {
/*Class handle the atributos obj from json*/
//Variable name should be same as the names given in the json response
public String id = null;
public String nombre = null;
public String descripcion = null;
public String version = null;
}
public class ElementosObj {
/*Class handle the elementos array from json*/
//Variable name should be same as the names given in the json response
String id=null;
String name=null;
}
String jsonData = "String jsonData Contain your parsed jsondata ";
Gson mGson = new Gson();
JsonResponse mObj1 = (JsonResponse) mGson.fromJson(jsonData,
JsonResponse.class);
Log.d("Atributos:ID", mObj1.atributos.id);
Log.d("Atributos:DESCRIBTION", mObj1.atributos.descripcion);
Log.d("Atributos:NUMBER", mObj1.atributos.nombre);
Log.d("Atributos:VERSION", mObj1.atributos.version);
for (int i = 0; i < mObj1.elementos.size(); i++) {
Log.d("Elementos:ID For Postion " + i, mObj1.elementos.get(i).id);
Log.d("Elementos:NAME For Postion " + i,
mObj1.elementos.get(i).name);
}
05-03 01:32:51.548: D/Atributos:ID: 1
05-03 01:32:51.548: D/Atributos:DESCRIBTION: Cliente
05-03 01:32:51.548: D/Atributos:NUMBER: Cliente
05-03 01:32:51.548: D/Atributos:VERSION: 1
05-03 01:32:51.548: D/Elementos:ID For Postion 0: 1
05-03 01:32:51.548: D/Elementos:NAME For Postion 0: akira
05-03 01:32:51.548: D/Elementos:ID For Postion 1: 4
05-03 01:32:51.558: D/Elementos:NAME For Postion 1: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 2: 5
05-03 01:32:51.558: D/Elementos:NAME For Postion 2: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 3: 6
05-03 01:32:51.558: D/Elementos:NAME For Postion 3: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 4: 7
05-03 01:32:51.558: D/Elementos:NAME For Postion 4: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 5: 8
05-03 01:32:51.558: D/Elementos:NAME For Postion 5: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 6: 9
05-03 01:32:51.558: D/Elementos:NAME For Postion 6: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 7: 10
05-03 01:32:51.558: D/Elementos:NAME For Postion 7: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 8: 11
05-03 01:32:51.558: D/Elementos:NAME For Postion 8: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 9: 12
05-03 01:32:51.558: D/Elementos:NAME For Postion 9: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 10: 13
05-03 01:32:51.558: D/Elementos:NAME For Postion 10: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 11: 14
05-03 01:32:51.558: D/Elementos:NAME For Postion 11: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 12: 15
05-03 01:32:51.558: D/Elementos:NAME For Postion 12: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 13: 16
05-03 01:32:51.558: D/Elementos:NAME For Postion 13: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 14: 17
05-03 01:32:51.558: D/Elementos:NAME For Postion 14: akira
05-03 01:32:51.558: D/Elementos:ID For Postion 15: 18
05-03 01:32:51.558: D/Elementos:NAME For Postion 15: akira
|
gson.fromJson is returning null android retrofit and gson
Date : March 29 2020, 07:55 AM
Any of those help Found the solution, based on this link: https://futurestud.io/tutorials/retrofit-getting-started-and-android-clientpublic void onResponse(Call<UserDTO> call, Response<UserDTO> response) {
if (response.isSuccessful()) {
//TODO: Save response user properties to shared constants
Intent intent = new Intent(getBaseContext(), MainActivity.class);
startActivity(intent);
finish();
} else if (response.code() == 400) {
Converter<ResponseBody, ValidationContainer> converter =
retrofit.responseBodyConverter(ValidationContainer.class, new Annotation[0]);
try {
ValidationContainer error = converter.convert(response.errorBody());
Toast.makeText(getBaseContext(), error.getMessage(), Toast.LENGTH_LONG).show();
} catch (Exception e) {
Log.d(Tag, e.getMessage());
}
}
}
|
IllegalArgumentException when using GSON's fromJson()
Date : March 29 2020, 07:55 AM
I think the issue was by ths following , I found out that it was a Button array from javafx.scene.control.Button in my Event class that was causing the problem. I fixed it by making it transient so it would get ignored by GSON and not cause any problems. Nevertheless, I have no idea why the Button array would cause this exception. Any thoughts?
|