Java 如何将下面的字符串转换为地图列表?
如何将下面的字符串转换为地图列表Java 如何将下面的字符串转换为地图列表?,java,string,list,dictionary,Java,String,List,Dictionary,如何将下面的字符串转换为地图列表 [ {externalId=externalId_2, externalIdDocId=abc, partyRoleExternalIdType=type_extId }, {externalId=externalId_3, externalIdDocId=xyz, partyRoleExternalIdType=type_extId2 } ] 我已尝试将字符串转换为字符串列表 List
[
{externalId=externalId_2,
externalIdDocId=abc,
partyRoleExternalIdType=type_extId
},
{externalId=externalId_3,
externalIdDocId=xyz,
partyRoleExternalIdType=type_extId2
}
]
我已尝试将字符串转换为字符串列表
List<String> externalIdlist = (List<String>) gson.fromJson(cbExternalIds, List.class);
然后将每个字符串逐个转换为映射
Map<String, String> externalIdMap = gson.fromJson(gson.toJson(externalIdlist.get(i)), Map.class);
这是可行的,但是有更好的解决方案吗?下面的代码片段可以满足需要。我假设您的预期输出是List试试这个
HashMap<String,Object> result = new ObjectMapper().readValue(jsonString.replaceAll("=",":"), HashMap.class);
首先,您必须通过将th=chars替换为:将字符串转换为正确的Json,并使用ObjectMapper将其转换为HashMap类对象
ObjectMapper将Json解析为特定类对象最简单的方法是使用如下字符串方法手动解析: 用replaceAll卸下[和] 使用Split将剩余的标记拆分为对象标记, 删除每个标记{和},然后像步骤2中那样使用split拆分其参数,然后使用split=、split up创建参数键值对。从每一对中,您可以获得作为第二个参数的值,或者干脆放弃键。 现在,您有了带有参数数组的数组,您可以从中手动创建对象 MyObject obj=新的MyObject; obj.setExternalIdtokens[0]; 对象setexternalIdDocIdtokens[1]; 对象setpartyRoleExternalIdTypetokens[2]; 最后,手动创建地图或阵列并添加创建的对象 如果要使用GSon、Jackson或其他,则必须首先使用3个参数创建对象模型,然后使用MyObject[]myobjectarray=GSon.fromJsonmyJson,MyObject[].class调用解析器 测试并得到以下结果-
这将适用于您的用例。请检查并编辑您的问题您尝试过什么吗?@jens我已经用我尝试过的内容更新了问题您可以一步完成。检查我的Ans,使用Gson的那个。试试看,这不是答案。解释你做了什么以及为什么。
HashMap<String,Object> result = new ObjectMapper().readValue(jsonString.replaceAll("=",":"), HashMap.class);
new Gson().fromJson(inputString, new ArrayList<Map<String, String>>().getClass())