Préface
JSON est l'abréviation de la notation des objets JavaScript, une forme légère d'échange de données, une alternative à XML, et est plus petite, plus rapide et plus facile à analyser que XML. Parce que JSON utilise la syntaxe JavaScript lors de la description d'objets, il est indépendant du langage et de la plate-forme, et de nombreux analyseurs JSON et bibliothèques de classe ont été développés au fil des ans.
JSON a les formulaires suivants:
Un objet est une collection non ordonnée de "'nom / valeur' paires '". Un objet commence par "{" (support ouvert) et se termine par "}" (support de fermeture). Chaque "nom" est suivi par A ":" (Colon); "'name / value' paire" est séparé par "," (virgule).
Une liste ordonnée de valeurs. Dans la plupart des langues, il est implémenté comme un tableau, un vecteur, une liste, une séquence.
Ce sont des structures de données courantes. Actuellement, la plupart des langages de programmation les soutiennent sous une forme ou une autre. Cela permet d'échanger des données dans le même format entre divers langages de programmation.
Pour obtenir des données à partir des URL des autres serveurs, nous transmettons généralement les données JSON. Par exemple, le serveur B doit obtenir des informations de pagination à partir des URL du serveur A. Après avoir obtenu des caractères JSON, s'il est pratique et rapide à fonctionner, il doit être converti en votre propre objet Java.
Ici, j'ai essayé trois JSON tiers à convertir, un Google GSON. Celui-ci semble être incapable de convertir avec succès. Il continue de signaler une erreur de format JSON, mais la vérification a été correcte et la tentative a échoué. Le deuxième type est net.sf.json, ce qui signifie qu'aucune erreur n'est signalée, mais la valeur de l'objet est toujours vide. Seul JSON-Simple peut convertir avec succès des objets
Analyser JSON
Tout d'abord, nous devons analyser JSON pour voir si JSON est un format JSON standard. Nous pouvons voir JSON dans de nombreux formats en ligne sur Internet. Généralement, nous changeons la soupe et non le médicament lors de l'analyse de JSON comme objet.
Le premier: j'ai besoin de connaître la structure JSON. Ici, je vais démarrer le serveur A et obtenir une chaîne de données JSON à partir de son URL.
Jeter les données de copie JSON dans l'outil de mise en forme peut clairement voir la structure:
{"EventList": [{"id": 1030, "EventID": "1508779115818499700", "CreateTime": 1508779115000, "Endtime": 1508865480000, "EventContent": "123", "OpenID": "o4ewz06xzhw6mc2gmzmy }, {"id": 1029, "EventID": "1508382907251660498", "CreateTime": 1508382906000, "Endtime": 1508383020000, "EventContent": "Ahhhhhh" "o4eWZ06xzHW6mc2gMZMYVDEtx1zk" }, { "id": 1028, "eventId": "1508308708414580378", "createTime": 1508308721000, "endTime": 1508309040000, "eventContent": "30", "openid": "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1027, "EventID": "15083084633306664814", "CreateTime": "EventContent" "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}, {"ID": 1026, "EventID": "15083084630171444213", "CreateTime": "EventContent" "O4EWZ06XZHW6MC2GMZMYVDETX1ZK"}], "Page": "1", "Size": "5", "Ishaspage": "1"}Deuxièmement: Créez des classes d'entités correspondantes en fonction de la structure
import com.yhn.consumer.entity.event; import lombok.data; import org.json.simple.jsonObject; import java.io.serializable; import java.util.list; @datapublic eventvo implémente serializable {private list <EventList eventlist; page de chaîne privée; taille de chaîne privée; chaîne privée Ishaspage; Public EventVo (objet JSonObject) {// Méthode Constructor Attribue une valeur à l'objet EventList = (list <Event>) Object.get ("EventList"); page = (String) object.get ("page"); size = (String) object.get ("taille"); IsHaspage = (String) object.get ("IsHaspage"); }} Parce qu'il s'agit d'une structure embarquée, ce qui suit est la classe d'événements dans private List<Event> eventList ;
Importer lombok.data; import org.hibernate.annotations.damicupdate; importer javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; import java.io.serializable; upled upled upled ivalent; @ entity @ data @ dynamicdatdate // pustory wield upled ivalent; @ entity @ data @ dynamicdatedate // public wield upled in imposlement in impost @ data @ dynamicdatedate // public wield wield Serializable {// Ceci est l'événement dans la liste dans eventvo @id @generatedvalue ID entier privé; // Tri Fonction Private String EventID; // ID d'événement Private Date CreateTime; // Heure de création Date privée Endtime; // Mettre à jour le moment de la chaîne privée de temps; // Rappeler le contenu de l'événement Private String OpenID; //ID de l'utilisateur} Classe de test
Ensuite, la structure est également écrite. Vous rédigerez un test unitaire sur le serveur B pour voir si la valeur peut être attribuée avec succès.
@Test public void ClientDemo () lève une exception {StringBuilder JSON = new StringBuilder (); Url urlobject = new URL ("http://127.0.0.1/meetingsign/test/server?openID=O4EWZ06XZHW6MC2GMZMYVDETX1ZK&PAGE=2&Size=5"); // Spécifiez URL httpurlConnection uc = (httpurlConnection) urloBject .OpenConnection (); // Activer la connexion BufferedReader dans = new BufferedReader (new inputStreamReader (uc.getInputStream (), "utf-8")); String inputLine = null; while ((inputline = in.readline ())! = null) {json.append (inputline); // Split JSON} in.close (); uc.disconnect (); System.out.println (JSON); // Voyez si vous l'obtenez. // Supprimez possibles UTF-8, etc., car il peut contenir des fichiers d'en-tête 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 (résultat); Eventvo eventvo = new EventVo (data); // passe la valeur dans log.info ("eventvo = {}", eventVo); } / ** * Supprimer l'en-tête de la bombe * / public static String FormatString (String s) {if (s! = Null) {s = s.replaceAll ("/ uFeff", ""); } return s; } Résultats des tests
Il a attribué une valeur à l'objet
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.