10

SpringビルドJacksonサポートを使用してコントローラーのUIから送信されているJSONデータを解析しようとしています。これが私のコードです

final Map<String, CartDataHelper> entriesToUpdateMap = new ObjectMapper().readValue(entriesToUpdate, new TypeReference<Map<String, CartDataHelper>>()

私のJSON文字列は

{"0":"{\"categoryCode\":\"shoes\",\"productCode\":\"300050253\",\"initialQty\":\"3\",\"leftoverQty\":\"0\",\"newQty\":\"3\"}",
"1":"{\"categoryCode\":\"shoes\",\"productCode\":\"300050254\",\"initialQty\":\"3\",\"leftoverQty\":\"0\",\"newQty\":\"3\"}"}

いくつかのオンラインサービスを使用してJSON形式を確認しましたが、有効と思われますが、JSONデータを解析しようとすると次の例外が発生します

org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class controllers.util.CartDataHelper] from JSON String; no single-String constructor/factory method

私のクラスには、引数なしのコンストラクターを持つCartDataHelperforなどの単純なプロパティが含まれていますproductCodecategoryCode

4

2 に答える 2

7

コメントで述べたように、JSONにはJSONオブジェクトではなくJSON文字列が含まMap<String,String>れます。Map<String,CartDataHelper>

理想的には、オブジェクトをJSON文字列として書き出そうとしないでください。もしそうなら、物事はうまくいくでしょう。

于 2012-10-09T16:43:52.763 に答える
0

クライアント側では、jsonはオブジェクトではなく文字列として送信されるようです。そうすれば、サーバー側では、ふりをしているときにCartDataHelperではなく文字列を受信します。

送信してみてくださいJSON.parse(stringCartDataHelper)。それは同じ問題で私のために働いた。

于 2015-05-27T17:53:03.603 に答える