Prefácio
JSON é a abreviação da notação de objeto JavaScript, uma forma leve de troca de dados, uma alternativa ao XML e é menor, mais rápida e mais fácil de analisar do que XML. Como o JSON usa a sintaxe do JavaScript ao descrever objetos, é independente da linguagem e da plataforma, e muitos analisadores JSON e bibliotecas de classes foram desenvolvidos ao longo dos anos.
JSON tem os seguintes formas:
Um objeto é uma coleção não ordenada de "Nome/Value 'pares'". Um objeto começa com "{" (suporte aberto) e termina com "}" (suporte fechado). Cada "nome" é seguido por um ":" (cólon); "'Nome/value' par" é separado por "," (vírgula).
Uma lista ordenada de valores. Na maioria dos idiomas, é implementado como uma matriz, um vetor, uma lista, uma sequência.
Essas são estruturas de dados comuns. Atualmente, a maioria das linguagens de programação os suporta de alguma forma. Isso torna possível trocar dados no mesmo formato entre várias linguagens de programação.
Para obter dados dos URLs de outros servidores, geralmente transmitimos dados JSON. Por exemplo, o servidor B precisa obter informações de paginação dos URLs do servidor A. Depois de obter caracteres JSON, se for conveniente e rápido de operar, ele deve ser convertido em seu próprio objeto Java.
Aqui eu tentei três JSON de terceiros para converter, um Google GSON. Este parece não conseguir converter com sucesso. Ele continua relatando um erro de formato JSON, mas a verificação foi correta e a tentativa falhou. O segundo tipo é net.sf.json, o que significa que nenhum erro é relatado, mas o valor do objeto está sempre vazio. Somente JSON-Simple pode converter com sucesso objetos
Parse JSON
Primeiro de tudo, precisamos analisar o JSON para ver se o JSON é um formato JSON padrão. Podemos ver o JSON em muitos formatos on -line na Internet. Geralmente, mudamos a sopa e não o remédio ao analisar o JSON como um objeto.
O primeiro: preciso conhecer a estrutura JSON. Aqui vou iniciar o servidor A e obter uma sequência de dados JSON de seu URL.
Jogar os dados de cópia JSON na ferramenta de formatação pode ver claramente a estrutura:
{"EventList": [{"ID": 1030, "EventID": "1508779115818499700", "CreateTime": 1508779115000, "Endtime": 1508865480000, "EventContent": "123", "OpenId": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1029, "EventID": "15083829072516660498", "CreateTime": 1508382906000, "endtime": 1508830230230230. " "OpenID": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1028, "EventID": "1508308708414580378", "CreateTime": 1508308721000, "endtime" 1508 ":" "": "CreateTime": 1508308721000, "final "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1027, "EventID": "1508308463330664814", "CreateTime": 1508308480000, "Endtime": 15083085600 ": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1026, "EventID": "1508308463017144213," CreateTime ": 1508308479000," Endtime ": 15083085600", " "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}], "PAGE": "1", "Tamanho": "5", "Ishaspage": "1"}Segundo: Crie classes de entidade correspondentes com base na estrutura
importação com.yhn.consumer.entity.Event; importar lombok.data; importar org.json.simple.jsonObject; importar java.io.Serializable; importar java.util.list; @datapublic class Eventvo implementa seriizável {list prated <vent> sheventlist; página de sequência privada; Tamanho do String Private; String privada ishaspage; public Eventvo (objeto JsonObject) {// O método construtor atribui valor ao objeto EventList = (list <vent>) object.get ("EventList"); página = (string) object.get ("página"); tamanho = (string) object.get ("size"); ishaspage = (string) object.get ("ishaspage"); }} Por ser uma estrutura incorporada, a seguir é a classe de eventos na private List<Event> eventList ;
importar lombok.data; importar org.hibernate.annotações.dynamicupdate; importar javax.persistence.entity; importar javax.persistence.GeneratedValue; import javax.persistence.id;@java.io.ioneriizable; Serializable {// Este é o evento na lista no Eventvo @id @generatedValue ID inteiro privado; // Função de classificação Private String EventID; // ID do evento Data privada CreateTime; // Tempo de criação Data privada Endtime; // Atualizar tempo de string privada EventContent; // Lembre o conteúdo do evento Private String OpenId; //ID do usuário} Classe de teste
Em seguida, a estrutura também é escrita. Você escreverá um teste de unidade no servidor B para ver se o valor pode ser atribuído com sucesso.
@Test public void clientDemo () lança exceção {stringbuilder json = new StringBuilder (); Url urlobject = new url ("http://127.0.0.1/meetingsign/test/server?openid=o4ewz06xzhw6mc2gmzmyvdetx1zk&page=2&size=5"); // Especifique url httpurlConnection uc = (httpurlConnection) urlObject .openconnection (); // Ativar conexão BufferReader em = new BufferredReader (new InputStreamReader (uc.getInputStream (), "UTF-8")); String inputline = null; while ((inputline = in.readline ())! = null) {json.append (inputline); // dividido json} in.close (); uc.disconnect (); System.out.println (JSON); // Veja se você o obtém. // Remova o possível UTF-8, etc., porque pode conter arquivos de cabeçalho do BOM. String result = formatString (json.toString ()); JSONPARSER Parser = new JSONPARSER (); org.json.simple.jsonObject Data = new org.json.simple.jsonObject (); dados = (org.json.simple.jsonObject) parser.parse (resultado); EventVo Eventvo = new Eventvo (dados); // passa o valor para log.info ("Eventvo = {}", eventvo); }/*** Remova o cabeçalho da bomba*/public static string formatString (string s) {if (s! = Null) {s = s.replaceall ("/ufeff", ""); } retornar s; } Resultados do teste
É atribuído um valor ao objeto
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.