Estoy usando GSON, para convertir el JSON obtenido a un objeto en Java.
Mi problema esta en que no me deja crear los objeto y me devuelve un Excepción.
Nose si lo que me devuelve PHP me devuelve en un formato correcto para poder ser interpretado en GSON.
Lo que si al momento de ver el JSON en consola para ver lo que me devuelve, me pone una especie de punto al inicio y otro al final, cosa que si se los saco anda perfectamente, pero me gustaría saber cual puede ser el error y que puedo estar haciendo mal.
MI PHP es el siguiente:
Código
<?php $servidor="localhost"; $nombre_bd="test2"; $username="root"; $password=""; $conexion = mysql_connect($servidor, $username, $password) or die ("No se ha podido conectar al servidor de Base de datos"); $sql = "SELECT * FROM usuario"; $i = 0; $array[$i] = $row; $i ++; } echo $json; ?>
El Java de donde hago la petición:
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package prueba.comsumir.webservice; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; /** * * @author Pablo */ public class PruebaComsumirWebservice { /** * @param args the command line arguments */ Usuario usuario = new Usuario(1, "User1", "123"); URL url; try { // Creando un objeto URL // Realizando la petición GET // Leyendo el resultado con.getInputStream())); String linea; while ((linea = in.readLine()) != null) { json += linea; } //{"id":1,"usuario":"usuario1","contrasenia":"asd"} Usuario usuario1 = new Gson().fromJson(json, Usuario.class); } }
Y la clase Usuario:
Código
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package prueba.comsumir.webservice; /** * * @author Pablo */ public class Usuario { private int id; this.id = id; this.usuario = usuario; this.contrasenia = contrasenia; } public int getId() { return id; } public void setId(int id) { this.id = id; } return usuario; } this.usuario = usuario; } return contrasenia; } this.contrasenia = contrasenia; } @Override } }
Cuando ejecuto el código desde Netbeans, me devuelve el siguiente JSON: y me da la siguiente Excepción:
{"0":{"0":"1","id":"1","1":"user1","usuario":"user1","2":"asd","contrasenia":"asd"},"1":{"0":"2","id":"2","1":"user2","usuario":"user2","2":"dsa","contrasenia":"dsa"}}
Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 169 path $
at com.google.gson.Gson.assertFullConsumption(Gson.java:855)
at com.google.gson.Gson.fromJson(Gson.java:845)
at com.google.gson.Gson.fromJson(Gson.java:793)
at com.google.gson.Gson.fromJson(Gson.java:765)
at prueba.comsumir.webservice.PruebaComsumirWebservice.main(PruebaComsumirWebservice.java:48)
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 169 path $
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1567)
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1416)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:546)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:429)
at com.google.gson.Gson.assertFullConsumption(Gson.java:851)
... 4 more
C:\Users\Pablo\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
Un saludo y gracias desde ya.