MalformedJsonException avec l'API Retrofit?
J'ai besoin d'envoyer un json à mon webservice, json est:
{
"Sala": {
"usuario": "%@",
"adversario": "%@",
"atualizacao": "%@",
"device": "%@",
"device_tipo": "ios"
}
}
. Je suis en train de le faire à l'aide de Rénovation de l'API 1.8.
Lorsque j'essaie d'envoyer le post déclenche une exception.
Exception:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 7 path $
Je vais essayer cette
public class ChatObject {
private String usuario;
private String adversario;
private String atualizacao;
private String email;
private String device;
private String device_tipo;
Rénovation Interface
@POST("/WsChat/interacao.json")
public void onReceiveMessage(@Body ChatObject obj,
Callback<JsonElement> response);
Implémente
public void receiveMessage(){
///{\"Sala\":{\"usuario\":\"%@\",\"adversario\":\"%@\",\"atualizacao\":\"%@\",\"device\":\"%@\",\"device_tipo\":\"ios\"}}
ChatObject chatObject = new ChatObject(BatalhaConfigs.USUARIO_EMAIL,
BatalhaConfigs.ADVERSARIO_EMAIL,
new Date().toString(),
BatalhaConfigs.USUARIO_EMAIL,
AndroidReturnId.getAndroidId(),
"android");
RestAdapter adapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setRequestInterceptor(new CustomRequestInterceptor())
.setEndpoint(END_POINT)
.build();
ChatListener listener = adapter.create(ChatListener.class);
listener.onReceiveMessage(chatObject, new Callback<JsonElement>() {
@Override
public void success(JsonElement jsonElement, retrofit.client.Response response) {
Log.i("JSON ELEMENT->", jsonElement.toString());
}
@Override
public void failure(RetrofitError error) {
Log.i("FALHOU->", error.getLocalizedMessage());
}
});
}
source d'informationauteur FernandoPaiva
Vous devez vous connecter pour publier un commentaire.
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true)
est généralement jeté quand il y a un certain personnage(s) que malforms le JSON. Message de l'Exception elle-même suggérer de faire de la désérialisation plus tolérants.Mais je vous suggère de fixer votre JSON et de l'assiette à partir de caractères indésirables.
Vous devez étendre
GsonConverter
et remplacerfromBody()
de faireGson
lire à partir de la tolérance deJsonReader
. Ensuite, il suffit de le régler à votreRestAdapter
. Il va tenter d'utiliser tolérantJsonReader
pour désérialiser et le fermer, sinon une exception est levée.}
Semble son légèrement changé avec Rénovation 2.0
Voici comment je l'ai fait:
Une nouvelle clémente gson usine:
Clémente analyse des réponses: le
Clémente création de demandes:
Je viens de copier la modification du code source et ajouté une ligne à la demande et la réponse convertisseurs
jsonWriter.setLenient(true);
Ou encore plus simple:
Vous devez aider ce code :
Mettre le fichier jar :