2017-09-01 2 views
0

J'ai un id (Long) que js ne peut pas gérer. Donc, quand je reviens id, je veux retourner une autre propriété id_str.ajouter une propriété personnalisée lorsque writeValueAsString (objet)

Tout comme:

{"id":43777753494847488, "id_str":"43777753494847488"}

J'utilise la méthode de fastxml jackson writeValueAsString(object).

Que dois-je faire?

+1

Bienvenue dans Stack Overflow! Malheureusement, votre question ne contient que des exigences - elle ne montre aucun effort de votre part pour résoudre ce problème vous-même. S'il vous plaît ajouter vos tentatives à ces questions - que ce site n'est pas un libre "nous faisons votre (home) work" service. Au-delà de cela: veuillez vous tourner vers le [aide] pour apprendre comment/quoi demander ici. Merci! – GhostCat

+0

Pourquoi ne pas simplement écrire l'ID en tant que chaîne, au lieu de l'écrire en tant que Long et String? – JonK

Répondre

0

Impossible de réécrire le JsonSerializer. Peut-être que c'est dur pour moi. Donc, je modifie la chaîne JSON. voici le code:

public static String expandUserIDStr(String json) { 
    String key = "user_id"; 
    String expandKey = "user_id_str"; 

    String r = "\"" + key + "\":(\\d+)[,]{0,1}"; 
    Pattern patter = Pattern.compile(r); 
    Matcher matcher = patter.matcher(json); 

    StringBuffer buffer = new StringBuffer(); 
    while (matcher.find()) { 
     String expandContent = "\"" + expandKey + "\":\"" + matcher.group(1) +"\"," + matcher.group(0); 
     System.out.println(expandContent); 
     matcher.appendReplacement(buffer, expandContent); 
    } 
    matcher.appendTail(buffer); 

    return buffer.toString(); 
}