使用JSF的Jackson在Map中进行Map

xu3bshqb  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(57)

我正在使用Jackson从/向JSON文件中读取/写入数据,我有一个与用户POJO的问题。它有一个Map<Enum,Object>,这应该是联系用户的方式(因此它可以从0到7,取决于Enum)。我希望能够把方式联系使用JSF的形式。
我尝试了类似value="#{config.user.contacts[EMAIL_PRO]}"的东西,其中EMAIL_PRO当然是一个枚举(稍后,用户应该能够自己选择枚举,但现在我尝试简单)。但是当我这么做的时候,错误是
JSON中不允许Map的关键字
我理解,因为我的调试程序说返回的值是{null = null}。第一个问题既然map是空的,那么JSF应该像那样工作吗?键“EMAIL_PRO”还不存在,但JSF不应该为我做这些工作,并为键提供正确的值吗?
另一个问题更多的是关于Jackson和Map。正如我所说的,我的POJO User包含一个Map,JSON文件本身就是一个Map(包含多个用户)。
是否真的可以使用Jackson将Map写入此文件,其中Map为Map<String, Object>,而Object包含Map<Enum, Object>?如果是的话,怎么做?
谢谢你的帮助
PS:我不能改变我的API或POJO。

3zwjbxry

3zwjbxry1#

我认为这是一个重复的职位,见How to convert hashmap to JSON object in Java
正如其中一个回复所说:

Map<String, Object> data = new HashMap<String, Object>();
data.put( "name", "Mars" );
data.put( "age", 32 );
data.put( "city", "NY" );
JSONObject json = new JSONObject();
json.putAll( data );
System.out.printf( "JSON: %s", json.toString(2) );

产出:

JSON: {
  "age": 32,
  "name": "Mars",
  "city": "NY"
}

您也可以尝试使用Google的GSON。Google的GSON是将Java对象转换为JSON表示的最佳库

相关问题