Prefacio
JSON es la abreviatura de la notación del objeto JavaScript, una forma ligera de intercambio de datos, una alternativa a XML, y es más pequeña, más rápida y más fácil de analizar que XML. Debido a que JSON usa la sintaxis de JavaScript al describir objetos, es independiente del lenguaje y la plataforma, y muchos analizadores y bibliotecas de clase JSON se han desarrollado a lo largo de los años.
JSON tiene los siguientes formularios:
Un objeto es una colección desordenada de "Nombre/Valor 'Pares'". Un objeto comienza con "{" (abrir el soporte) y termina con "}" (cierre del soporte). Cada "nombre" es seguido por un ":" (colon); "El par de 'nombre/valor'" está separado por "," (coma).
Una lista ordenada de valores. En la mayoría de los idiomas, se implementa como una matriz, un vector, una lista, una secuencia.
Estas son estructuras de datos comunes. Actualmente, la mayoría de los lenguajes de programación los admiten de alguna forma. Esto permite intercambiar datos en el mismo formato entre varios lenguajes de programación.
Para obtener datos de las URL de otros servidores, generalmente transmitimos datos JSON. Por ejemplo, el servidor B necesita obtener información de paginación de las URL del servidor A. Después de obtener caracteres JSON, si es conveniente y rápido de operar, debe convertirse en su propio objeto Java.
Aquí he probado tres JSON de terceros para convertir, un Google GSON. Este parece no poder convertirse con éxito. Sigue informando un error de formato JSON, pero la verificación ha sido correcta y el intento falló. El segundo tipo es net.sf.json, lo que significa que no se informan errores, pero el valor del objeto siempre está vacío. Solo JSON-Simple puede convertir con éxito objetos
Analizar
En primer lugar, necesitamos analizar JSON para ver si JSON es un formato JSON estándar. Podemos ver JSON en muchos formatos en línea en Internet. En general, cambiamos la sopa y no el medicamento al analizar JSON como un objeto.
El primero: necesito conocer la estructura JSON. Aquí comenzaré el servidor A y obtendré una cadena de datos JSON de su URL.
Lanzar los datos de la copia JSON a la herramienta de formato puede ver claramente la estructura:
{"EventList": [{"id": 1030, "EventId": "1508779115818499700", "CreateTimeMe": 1508779115000, "EndMime": 1508865480000, "EventContent": "123", "OpenID": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"id": 1029, "EventId": "1508382907251660498", "CreateTime": 1508382906000, "Tiempo de extracción": 1508383020000, "EventContent": ",", ",", ",", ",", "," ",", ",", "", "," ",", "", "," "," "," "," "," " "openid": "o4eWZ06xzHW6mc2gMZMYVDEtx1zk" }, { "id": 1028, "eventId": "1508308708414580378", "createTime": 1508308721000, "endTime": 1508309040000, "eventContent": "30", "openid": "o4eWZ06xzHW6mc2gMZMYVDEtx1zk" }, { "id": 1027, "eventId": "1508308463330664814", "createTime": 1508308480000, "endTime": 1508308560000, "eventContent": "28", "openid": "o4eWZ06xzHW6mc2gMZMYVDEtx1zk" }, { "id": 1026, "eventId": "1508308463017144213", "createTime": 1508308479000, "endTime": 1508308560000, "eventContent": "27", "openid": "o4ewz06xzhw6mc2gmzmyvdetx1zk"}], "página": "1", "tamaño": "5", "ishaspage": "1"}Segundo: Crear clases de entidad correspondientes basadas en la estructura
import com.yhn.consumer.entity.event; import lombok.data; import org.json.simple.jsonobject; import java.io.serializable; import java.util.list; @datapublic class eventvo implementa serializable {lista privada <vent> eventlist; Página de cadena privada; tamaño de cadena privada; cadena privada ishaspage; public EventVo (JSONObject Object) {// El método Constructor asigna valor a Object EventList = (List <Svent>) Object.get ("EventList"); página = (String) Object.get ("Page"); size = (string) object.get ("size"); ishaspage = (string) object.get ("ishaspage"); }} Debido a que es una estructura integrada, la siguiente es la clase de eventos en private List<Event> eventList ;
import lombok.data; importar org.hibernate.annotations.dynamicUpdate; import javax.persistence.entity; import javax.Persistence.GeneratedValue; import javax.persistence.id; import java.io.serializable; import java.util.util.date;@entity@dynamicUpdate //////autal de eventualidad de eventualmente; Serializable {// Este es el evento en la lista en eventvo @id @GeneratedValue ID de entero privado; // Función de clasificación de cadena privada eventId; // ID de evento Fecha privada CreateToMime; // Tiempo de creación Fecha privada Fecha de final; // Actualizar el tiempo de la cadena privada EventContent; // Recuerda el contenido del evento Cadena privada OpenID; // ID de usuario} Clase de prueba
A continuación, la estructura también está escrita. Escribirá una prueba unitaria en el servidor B para ver si el valor se puede asignar correctamente.
@Test public void clientDemo () lanza la excepción {StringBuilder json = new StringBuilder (); Url urlObject = new URL ("http://127.0.0.1/meetingsign/test/server?openid=o4ewz06xzhw6mc2gmzmyvdetx1zk&page=2&size=5"); // especificar url httpurlconnection uc = (httpurlconnection) urlObject .openconnection (); // Habilitar Connection BufferedReader en = new BufferedReader (new InputStreamReader (uc.getInputStream (), "UTF-8")); String inputline = null; while ((inputline = in.readline ())! = null) {json.append (inputLine); // dividir json} in.close (); UC.Disconnect (); System.out.println (JSON); // Ver si lo obtiene. // Eliminar posible UTF-8, etc., porque puede contener archivos de encabezado BOM. String result = formatString (json.ToString ()); Jsonparser parser = new JsonParser (); org.json.simple.jsonObject data = new org.json.simple.jsonObject (); data = (org.json.simple.jsonObject) parser.parse (resultado); EventVo eventVo = new EventVo (datos); // pasar el valor a log.info ("eventVo = {}", eventVo); }/*** Retire el encabezado de bomba*/public static string formatString (string s) {if (s! = Null) {s = s.replaceall ("/Ufeff", ""); } return s; } Resultados de las pruebas
Se le asigna un valor al objeto
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.