如何将字符串下面的内容转换为地图列表?
[
{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
Map<String, String> externalIdMap = gson.fromJson(gson.toJson(externalIdlist.get(i)), Map.class);
这可行,但是有更好的解决方案吗?
答案 0 :(得分:1)
new Gson().fromJson(inputString, new ArrayList<Map<String, String>>().getClass())
经过测试,并获得了结果-
这将适用于您的用例。
答案 1 :(得分:0)
以下代码段将满足需要。我假设您的预期输出是List<Map<String, String>
类型。
List<Map<String, String>> output = new ArrayList<>();
input = input.substring(2, input.length() -2);
String[] split = input.replace("}, {", "!").split("!");
for (String s : split) {
String[] split1 = s.trim().split(",");
Map<String, String> m1= new HashMap<>();
for (String s1 : split1) {
String[] kv = s1.trim().split("=");
m1.put(kv[0],kv[1]);
}
output.add(m1);
}
return output;
答案 2 :(得分:0)
尝试一下
HashMap<String,Object> result = new ObjectMapper().readValue(jsonString.replaceAll("=",":"), HashMap.class);
首先,您必须通过将“ =” chars替换为“:”将字符串转换为正确的Json,然后使用ObjectMapper将其转换为 HashMap类对象
ObjectMapper 将Json解析为特定的Class对象
答案 3 :(得分:0)
最简单的方法是使用像这样的字符串方法手动解析它:
[
删除]
和replaceAll
split(",")
{
和}
,然后像在步骤2中一样使用split(",")
拆分其参数,然后创建参数param的键值对,并使用split("=")
进行拆分。从每对中,您都可以将值作为第二个参数,或者直接丢弃键。现在您有了带有参数数组的数组,可以从中手动创建对象
MyObject obj = new MyObject();
obj.setExternalId(tokens[0]);
obj.setexternalIdDocId(tokens[1]);
obj.setpartyRoleExternalIdType(tokens[2]);
最后手动创建您的Map或Array并添加创建的对象。
如果要使用GSon,Jackson或其他,则必须先使用3个参数创建对象模型,然后使用MyObject[] myObjArray = gson.fromJson(myJson, MyObject[].class);
调用解析器