java.lang.classのインスタンスをstart_object tokenの脱毛できません

StackOverflow https://stackoverflow.com/questions/3156674

  •  01-10-2019
  •  | 
  •  

質問

このコードを実行したときに得られるエラーをプロッパーに理解できません:

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から始まる)を見て例外をスローします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top