Cette fois, je vais vous présenter la méthode de conversion automatique de casse lorsque Jackson analyse une chaîne json. Quelles sont les précautions pour la conversion automatique de casse lorsque Jackson analyse une chaîne json. Ce qui suit est un cas pratique. Jetons un coup d'oeil une fois.
Problème
Le problème rencontré par l'affiche est qu'un certain champ défini dans la classe et la table d'entité est RMBPrice, avec la première lettre en majuscule . Le nom de la colonne renvoyé par sql query est également RMBPrice en majuscules, mais lors de l'utilisation des tables de données de jquery pour initialiser la colonne, une erreur se produit. Le code de cette ligne de
est le suivant :
{"name": "RMBPrice", "data": "RMBPrice", "className": "text-center", "render": formatRMBPrice},
Lorsque vous ouvrez la page, ceci sera affiché. Vérifiez la valeur renvoyée par le navigateur appelant l'interface :
est en minuscule rmbprice
Analyse
L'interface renvoie un objet @ResponseBody À partir du point d'arrêt dans le code, la valeur de retour à l'interface est entièrement en majuscules, elle ne peut donc être que. conversion Un problème est survenu lors de l'accès à json.
La première lettre de Baidu json est en majuscule et les articles seront automatiquement convertis en minuscules.
Après les tests, il est vrai que les quelques lettres actuelles qui sont toutes en majuscules seront converties en minuscules jusqu'à ce qu'elles ne soient plus majuscules. S'il y a une majuscule après la minuscule, elle restera en majuscule.
Par exemple : RRRddRRR deviendra rrrddRRR.
Solution
Je modifie directement la ligne de code en js et change Après avoir interrogé :
{"name": "rmbprice", "data": "rmbprice", "className": "text-center", "render": formatRMBPrice},
, si vous souhaitez conserver les majuscules, vous devez ajouter des annotations.
Par exemple, Jackson utilise :
Lors de la définition de champs dans les classes d'entités :
@JsonProperty("ActionCode") private String ActionCode = "";
fastjson utilise :
@JSONField(name = « Name ») Et cette balise doit être marquée avant la méthode get :
public class User { private String name; private int age; @JSONField(name = "Name") public String getName(){ return name; } public void setName(String name){ this.name = name; } @JSONField(name = "Age") public int getAge(){ return age; } public void setAge(int age){ this.age= age; } }
Je crois que vous avez lisez le cas dans cet article Après avoir maîtrisé la méthode, veuillez prêter attention aux autres articles connexes sur le site Web php chinois pour un contenu plus passionnant !
Lecture recommandée :
Comment gérer l'absence de réflexion après une demande ajax réussie de données d'arrière-plan
panneau d'onglets jQuery EasyUI les onglets utilisent
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!