2016-02-14 70 views
1

我有這個類:
改變字段名稱序列化時,對象

import org.boon.json.annotations.SerializedName; 

public class QueuedMessage { 

    @SerializedName("message_id") 
    String id; 

    @SerializedName("message") 
    String msg; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getMsg() { 
     return msg; 
    } 

    public void setMsg(String msg) { 
     this.msg = msg; 
    } 
} 

我創建一個對象,並對其進行序列化,但字段名稱不會改變

QueuedMessage qm = new QueuedMessage(); 
    qm.setId("1"); 
    qm.setMsg("hi"); 
    String js1 = json.toJson(qm); 

我希望JS1變量是什麼例如:{「message_id」:「1」,「message」:「hi」}
但它是:{「id」:「1」,「msg」:「hi」,「id」:「1」, 「msg」:「hi」}

+0

也許嘗試使用@JsonProperty –

+0

它不工作過! –

回答

1

你需要告訴JsonFactory使用註釋:

ObjectMapper json = JsonFactory.createUseAnnotations(true); 
1

n ot確定Boon但這是如何使用Gson序列化Object,可能有一些問題導入StringSerializedName,請檢查一下。此示例按所示的輸出運行。該代碼也可在Github 上獲得。

import com.google.gson.Gson; 
import com.google.gson.annotations.SerializedName; 

/** 
* Created by Pankaj Nimgade on 14-02-2016. 
*/ 
public class TestDriveOne { 

    public static void main(String[] args) { 
     QueuedMessage queuedMessage = new QueuedMessage("123", "Hello World"); 
     System.out.println((new Gson()).toJson(queuedMessage)); 
    } 


} 

class QueuedMessage { 

    @SerializedName("message_id") 
    private String id; 

    @SerializedName("message") 
    private String msg; 

    public QueuedMessage() { 
    } 

    public QueuedMessage(String id, String msg) { 
     this.id = id; 
     this.msg = msg; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getMsg() { 
     return msg; 
    } 

    public void setMsg(String msg) { 
     this.msg = msg; 
    } 
} 

輸出

{ 
    "message_id": "123", 
    "message": "Hello World" 
} 
+0

謝謝你的迴應,但我必須使用恩! –

相關問題