2016-09-02 9 views
0

SpringブートでJSONメッセージをデシリアライズしてJavaオブジェクトを作成しようとしています。私は、次のようなクラスを持っている:Springを使用した着信JSONメッセージのJavaオブジェクトへの変換

public class Status implements Serializable { 
    private int uptime; 
} 

それから私のような休憩コントローラーを持っている:

@RestController 
public class StatusReceiver { 

    @RequestMapping(value = "/poststatus", method = RequestMethod.POST) 
    public @ResponseBody Status storeStatus(@RequestBody Status statusMessage) { 

     System.out.println("Uptime: " + statusMessage.getUptime()); 

     return statusMessage; 

    } 

} 

私は間違いなく私がここでやっているの公平なビットを理解していません。コントローラがメッセージを受信して​​データベースに格納するときに、コントローラがStatusオブジェクトを作成するようにします。このコードの

出力は次のとおりです。

Uptime: 0 

それは受信者のメッセージには、次のとおりです。

{ 
    "Status": [ 
    { 
     "uptime": 12345.0 
    } 
    ] 
} 

私は明らかに何かが欠けています。 SpringがJSONオブジェクトをStatus Javaオブジェクトに変換する方法を教えてください。また、このメソッドからの戻り値はどこに行くのでしょうか?

+1

コードが機能するはずです。問題は何ですか? – sidgate

+0

申し訳ありませんが、私はここで2つの重要な側面を見逃していたことに気付きました。明らかに、12345.0はロングです。 Statusメンバの稼働時間をLongに変更しましたが、変更はありません。 –

答えて

1

要求本体JSONがStatusオブジェクト構造と一致しません。どちらのあなたの体は

{uptime: 12345.0} 

あるべきか、ステータスクラスは

class Status { 
    List<Map<String, Long>> status = new ArrayList<>(); 
} 

代わりの地図のリストを持つことは、あなたが新しいクラスを定義することができることと、この新しいクラスのリストを持っている必要があり

class StatusInfo{ 
    long uptime; 
} 

class Status { 
    List<StatusInfo> status = new ArrayList<>(); 
} 
+0

ありがとう。最初の選択肢は、私がやろうとしていることをよりよく反映していると思います。私は今、JSONの複数の項目を扱えるようにしようとしています。かなり簡単であることが判明しました.JSONの使い方を学ぶ必要があります。 –

関連する問題