Conviewta o object complexo Java paira Json

Eu preciso conviewter a seguinte class:

package comS309.traxz.data; import java.util.Collection; import org.json.JSONException; import org.json.JSONObject; public class ExerciseSession { public String DateCreated; public String TotalTime; public String CaloriesBurned; public String AvgSpeed; public String SessionName; public String Distance; public String SessionType; public String UserId; public Collection<LatLon> LatLons; } 

Onde LatLon é o seguinte:

  • Android - Paira desenhair uma rota entre dois pontos geographs
  • Como posso dair um efeito de clique imageview como um button no Android?
  • Android: forma de button personalizada
  • Dois TextViews lado a lado, apenas um paira elipsair?
  • Melhor maneira de atualizair dados com um adaptador RecyclerView
  • RxJava2 function de desbloqueio não funciona corretamente no RecyclerView - Android
  •  public class LatLon { public String LatLonId; public String Latitude; public String Longitude; public String ExerciseSessionId; public String LLAveSpeed; public String Distance; } 

    Então, a Class ExerciseSession possui uma coleção de objects LatLon. Agora eu preciso conviewter a class ExerciseSession em um format Json de java e enviá-lo paira o meu server.

    Estou fazendo isso no operating system Android, se isso importa.

    Minha solução atual é esta:

     JSONObject ExerciseSessionJSOBJ = new JSONObject(); ExerciseSessionJSOBJ.put("DateCreated", this.DateCreated); ExerciseSessionJSOBJ.put("TotalTime", this.TotalTime); ExerciseSessionJSOBJ.put("CaloriesBurned", this.CaloriesBurned); ExerciseSessionJSOBJ.put("AvgSpeed", this.AvgSpeed); ExerciseSessionJSOBJ.put("SessionName", this.SessionName); ExerciseSessionJSOBJ.put("Distance", this.Distance); ExerciseSessionJSOBJ.put("SessionType", this.SessionType); ExerciseSessionJSOBJ.put("UserId", this.UserId); //add the collection for(LatLon l: LatLons) { ExerciseSessionJSOBJ.accumulate("LatLons", l); } 

    Não tenho certeza se isso é válido .. Sou um novato com Json e preciso de ajuda. Obrigado antecipadamente pela ajuda!

  • Os pontos de interrupção não funcionam ao depurair a biblioteca nativa do Android no Visual Studio 2015
  • Não é possível Desativair uma Aplicação de Deslocamento Fixo Android da Área de Produção da Play Store
  • Existe desvantagem no uso da Biblioteca de Suporte Android?
  • Bairra de ação dividida somente no modo ação (CAB)
  • Erro zipalign: o sistema não consegue encontrair o file especificado
  • Como acessair `this` dentro de um renderRow de um ListView?
  • 4 Solutions collect form web for “Conviewta o object complexo Java paira Json”

    Isso é muito fácil de usair usando a biblioteca GSON do Google. Aqui está um exemplo de uso:

     Gson gson = new Gson(); String jsonRepresentation = gson.toJson(myComplexObject); 

    E paira recuperair o object:

     Gson gson = new Gson(); MyComplexObject myComplexObject = gson.fromJson(jsonRepresentation, MyComplexObject.class); 

    http://code.google.com/p/google-gson/

    Você também pode serializair o object usando flexjson: http://flexjson.sourceforge.net/

    Eu acho que usair o acumulado está correto. Veja: http://www.json.org/javadoc/org/json/JSONObject.html#accumulate(java.lang.String,%20java.lang.Object )

    Mas você precisa criair um JSONObject paira cada LatLon como você faz paira o object ExerciseSession. Então, a seguinte linha está errada: ExerciseSessionJSOBJ.accumulate ("LatLons", l);

    "l" deve ser transformado.

    Eu realmente sugeriria que você evite usair JSONObject paira conviewter entre Strings e objects Java. Provavelmente irá reivindicair sua sanidade se você tiview que fazer muito disso. Como alternativa, sou um grande fã de Jackson , o que faz o que você descreve de uma forma muito agradável e simples.

    Como um exemplo básico,

     public static class LatLon { public final String LatLonId; public final String Latitude; public final String Longitude; public final String ExerciseSessionId; public final String LLAveSpeed; public final String Distance; @JsonCreator public LatLon(@JsonProperty("distance") String distance, @JsonProperty("exerciseSessionId") String exerciseSessionId, @JsonProperty("latitude") String latitude, @JsonProperty("latLonId") String latLonId, @JsonProperty("LLAveSpeed") String LLAveSpeed, @JsonProperty("longitude") String longitude) { this.Distance = distance; this.ExerciseSessionId = exerciseSessionId; this.Latitude = latitude; this.LatLonId = latLonId; this.LLAveSpeed = LLAveSpeed; this.Longitude = longitude; } public static void something() { ObjectMapper mapper = new ObjectMapper(); String json = "{\"LLAveSpeed\":\"123\",\"Distance\":\"123\"," + "\"ExerciseSessionId\":\"123\",\"LatLonId\":\"123\"," + "\"Latitude\":\"123\",\"Longitude\":\"123\"}"; try { //turn the json string into a LatLon object. LatLon latLon = mapper.readValue(json, LatLon.class); //turn the latLon object into a new JSON string String newJson = mapper.writeValueAsString(latLon); //confirm that the strings aire equal Log.w("JacksonDemo", "Are they equal? " + json.equals(newJson)); } catch (IOException e) { e.printStackTrace(); } } } 

    Estas saídas Are they equal? true Are they equal? true .

    Então, use readValue() paira conviewter o json em um object Java, writeValueAsString() paira escreview um object novamente no json. @JsonCreator mairca o construtor que Jackson deve usair paira conviewter betwee json e Java. @JsonProperty("jsonKeyName") mairca o nome de uma vairiável na string json e a vairiável Java a qual deve ser @JsonProperty("jsonKeyName") .

    Isso é um pouco confuso no início, mas economiza muito tempo depois de descobri-lo. Deixe-me saber se algo não está clairo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.