2017-12-02 23 views
0

API RESTを使用してデータを取得し、JTextAreaに表示するプログラムがあります。すべてはOKですが、私はデシリアライズでこのプログラムを修正する必要があります。 APIからクラスCountryに渡したデータを非直列化して表示する必要があります。私が試みたが、得たエラー:クラスにデータを逆直列化する

public void actionPerformed(ActionEvent evt) { 

    /*ObjectMapper mapper = new ObjectMapper(); 
    String userDataJSON = "{\"nativeName\":\"latitude\",\"longitude\"}"; 
    mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); 

    try { 
     Country[] userFromJSON = mapper.readValue(userDataJSON, Country[].class); 
     System.out.println(userFromJSON); 
    } catch (IOException e1) { 
     System.out.println(e1); 
    }*/ 
      ... 
       textField.selectAll(); 
       textArea.setCaretPosition(textArea.getDocument().getLength()); 
      } 
     } catch (Exception e) { 
     } 
    } 
} 

そして、私のクラス国名:

public class Country { 

@JsonProperty 
private String name; 
@JsonProperty 
public String nativeName; 
@JsonProperty 
private String latitude; 
@JsonProperty 
private String longitude; 
@JsonProperty 
private String currencyCode; 

public Country(String name, String nativeName, String latitude, String longitude, String currencyCode) { 
    super(); 
    this.name = name; 
    this.nativeName = nativeName; 
    this.latitude = latitude; 
    this.longitude = longitude; 
    this.currencyCode = currencyCode; 

// getters & setters 
} 
+0

** 1 **国オブジェクトをJSONとして**国**配列**に逆シリアル化しようとしています。 –

+0

どうすればいいですか? – Viola

+0

あなたは**ワン**カントリーを望んでいるので、あなたは、あなたが脱直列化の結果としてそれを望むことをジャクソンに伝えるべきです: 'Country = mapper.readValue(userDataJSON、Country.class);' –

答えて

-1

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of model.Country[] out of START_OBJECT token at [Source: {"nativeName":"latitude","longitude"}; line: 1, column: 1]

ここでは私のメインクラス(デシリアライズを行うには、私の試みはコメントしている)であります次のように 'userDataJSON'を作成します。

String userDataJSON = "[{\"name\":\"test\", \"nativeName\":\"Test\", \"latitude\":\"45.898\",\"longitude\":\"76.8989\", \"currencyCode\":\"code\"}]"; 

とし、Countryクラスからコンストラクタを削除します。

+0

Askerが'userDataJSON'が現在コード内でコメントアウトされているので、静的な文字列ではなくAPIから読み込みます。私はそれを変えることが解決策だとは思わない。また、なぜ彼らはコンストラクタをカントリークラスから削除する必要がありますか?あなたの答えがうまくいく理由を説明してください。 – Loren

+0

私は 'userDataJSON'を静的なものとして考慮しませんでした。 2番目の質問[https://stackoverflow.com/questions/39123030/jackson-json-deserialization-with-multiple-parameters-constructor]では、有効なJSONではありません。 – anil

関連する問題