2017-09-01 46 views
0

我有一個ID(長),JS無法處理它。所以當我返回id時,我想返回另一個屬性id_str。當writeValueAsString添加自定義屬性(對象)

就像:

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

我使用fastxml傑克遜writeValueAsString(object)方法。

我該怎麼辦?

+1

歡迎來到堆棧溢出!不幸的是,你的問題只包含需求 - 它並沒有顯示你方的努力來解決這個問題。請將您的嘗試加入這個問題 - 因爲本網站不是免費的「我們做您的(家)工作」服務。除此之外:請轉到[幫助]瞭解如何/在這裏問什麼。謝謝! – GhostCat

+0

爲什麼不直接將ID作爲字符串寫出,而不是將它寫成長整型和字符串? – JonK

回答

0

無法重寫JsonSerializer。也許這對我來說很難。所以我修改了json字符串。這裏是代碼:

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(); 
}