java.lang.classのインスタンスをstart_object tokenの脱毛できません
質問
このコードを実行したときに得られるエラーをプロッパーに理解できません:
InputStream is = this.getClass().getClassLoader().getResourceAsStream(filename);
String jsonTxt = IOUtils.toString(is);
JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonTxt);
JSONObject metadatacontent = json.getJSONObject(0);
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(metadatacontent.toString(), MetadataContentBean.class.getClass());
エラー:
org.codehaus.jackson.map.jsonmappingexception:java.lang.classのインスタンスをstart_object tokenのaut of of start:java.io.stringreader@e3b895;ライン:1、列:1] atorg.codehaus.jackson.map.jsonmappingexception.from(jsonmappingexception.java:159)at org.codehaus.jackson.map.deser.stddeserializationcontext.mappingexception(stddeserializationcontext.java:192) .codehaus.jackson.map.deser.stddeserializer $ classdeserializer.deserialize(stddeserializer.java:439)at org.codehaus.jackson.map.deser.stddeserializer $ classeRializer.deserize(stddeseriizerizerizerizerizerizerize) .map.objectmapper._readmapandclose(objectmapper.java:1588)at org.codehaus.jackson.map.objedmapper.readvalue(objectmapper.java:1116)at com.path.parser.json.parser(json.java:65) com.path.parser.json.main(json.java:29)
どういう意味ですか??
たぶん私がこれを知っていれば、私は自分のエラーを見つけることができました。
解決
あなたの問題は最後の行です:
MetadataContentBean.class.getClass()
これは「私を取得する Class
MetadatacontentBeanクラスのオブジェクト、そして私を取得します Class
そのためのオブジェクト Class
オブジェクト "....あなたが私が言っていることを見るなら。だからあなたはジャクソンにあなたのjsonを脱上化するように頼んでいます Class
オブジェクト、それは方法がわからない。
これは正しいはずです
MetadataContentBean.class
他のヒント
これはおそらく他の質問に関連していますが、答えを完了するためだけに、エラーは不一致から生じます。タイプ「java.lang.class」はbeansのようなJSONオブジェクトとしてではなく、JSON文字列(クラス名自体)としてシリアル化されます。そのため、DeserializerはJSON文字列を見ることを期待しており、代わりにJSONオブジェクト(start_objectから始まる)を見て例外をスローします。