2016-10-25 39 views
0

下面是我在Java中使用傑克遜解析JSON字符串收到以下錯誤沒有單一字符串構造/工廠方法

String rspString = "{\"currency\": [{\"USD\": [\"U.S.Dollar\",\"$\"]},\"USD\"]}"; 

JsonUtil jsonUtil = new JsonUtil(); 
     API1Response configAPI1Rsp = new API1Response(); 
     API1Rsp = (API1Response) jsonUtil.Json2Object(rspString, configAPI1Rsp); 

public class API1Response 
{ 
    @JsonProperty("Currency") 
    public List<Currency> currency; 
    //getters and setters 
} 

public class Currency() 
{ 
    @JsonProperty("USD") 
    public List<USD> USD 

    //getters and Setters 
} 

當我運行上面的代碼我得到下面的錯誤:

Can not instantiate value of type [simple type, class com.sample.test.Currency] from String value ('USD'); no single-String constructor/factory method

上面的響應字符串如何處理USD(對象中的最後一個)如何在java中定義該對象。

在此先感謝。

+0

張貼上述正確的代碼?它編譯? '公共類貨幣()'我認爲它不應該有括號()請張貼確切的工作代碼 – pleft

+0

也添加Currency類的構造函數。我認爲可能沒有一個接受單個字符串或沒有參數,也可能沒有工廠方法。 –

+0

對於該錯字感到抱歉,他們對類貨幣不是「()」。請你舉一個例子,以便它能引導我在正確的路徑 –

回答

0

您在Json中的貨幣鍵是Object和String的數組,同時將對象數組轉換爲Java對象。所以你需要修改json字符串,使其只包含對象。即第二個元素「USD」不是對象,因此您會收到錯誤「沒有單個字符串構造函數/工廠方法」。

+0

中以這種方式開發json字符串不能刪除該元素USD,因爲它是一個要求。請幫助我如何從json獲取值。 –

+0

你可以分享你的美元類 –

+0

美元是一個具有數組值我已經聲明爲empltypublic類USD { } –

0

@JsonProperty(「貨幣」) - 確保「貨幣」應該是小寫字母,因爲它是在json字符串中。

+0

我已經做到了這還是同樣的問題 –

0

怎麼樣,

public class wallet { 
    List<Currency> currency; 
} 

"{\"currency\": [{\"USD\": [\"U.S.Dollar\",\"$\"]},]}"; or 
"{\"currency\": [{\"USD\": [\"U.S.Dollar\",\"$\"]},\"USD\":[]]}"; 
+2

儘管此代碼可以回答這個問題,提供了關於如何和其他上下文/或者爲什麼它解決了這個問題會提高答案的長期價值。 – Badacadabra

相關問題