2017-04-21 80 views
0

我正在使用feign進行我的休息呼叫。不幸的是,我得到的迴應之一看起來像這樣:在密鑰名稱中使用破折號的JSON響應

{ 
    "customer-id" : "0123" 
} 

JSON響應會自動映射到我的一個POJO。此響應對象不能具有名稱爲「customer-id」的屬性字段,因爲標識符名稱中不允許使用破折號( - )。

我試過如下:

public class LookUpAccountsResponse { 
     @JsonProperty("customer-id") 
     private String customerId; 
} 

但不幸的是,這並不工作。有沒有人有關於如何解決這個問題的建議?

+0

在JSON規範中,它表示不允許破折號? –

+0

JSON規範是什麼意思?我知道JSON響應在其關鍵字(「customer-id」)中有 - 。問題是創建一個具有相似名稱的Java屬性字段(因此可以映射它)。 –

+0

有效的JSON密鑰http://json.org有一個標準定義...我不確定錯誤是什麼,但下面的答案表明破折號不是問題,所以你可以嘗試創建一個[mcve]就像他們有? –

回答

0

它工作正常。這裏是一個簡單的例子:

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { 
    SomeClass sc = new ObjectMapper().readValue("{\"property-with-dash\": 5}", SomeClass.class); 

    System.out.println(sc.propertyWithDash); 
    } 

    public static class SomeClass { 
    @JsonProperty("property-with-dash") 
    private int propertyWithDash; 
    } 

這打印5如預期。沒什麼好抱怨的。

+0

我沒有使用ObjectMapper。我不確定Feign框架如何將響應映射到響應對象。 –

+0

你知道它使用的是什麼框架嗎?因爲那將決定如何配置它。自從您使用'@ JsonProperty'註釋以來,我就假設了Jackson。 – john16384

+0

@Robert你使用'GsonDecoder'還是'JacksonDecoder'?如果是後者,它確實使用了ObjectMapper –

0

使用JsonObjects和JsonArrays將允許您獲取鍵和值作爲字符串

相關問題