java - 如何在Java中将复杂的字符串转换为列表/数组?

标签 java arrays

我知道使用myString.split(",");如果我只有一个用逗号分隔的字符串,如 "a", "b", "c" ,那么就可以了,但是如果我有一个更复杂的字符串,例如:

["Meal End", "meal-end", "menu", {"color":"black", "width":1}]

我想分离出元素

"Meal End"

"meal-end"

"menu"

{"color":"black", "width":1}

我的第一个方法是从 (1 到 string.length - 1) 获取整个字符串的子字符串。这删除了[]。然后我使用了 string.split(",") ,它几乎起作用了......但是对于元素 3,我最终得到了我不想要的 {"color":"black"。

我想要整个大括号对象。除了手动搜索整个字符串、找到 { 时停止并到达 } 时继续之外,我还能如何执行此操作?

我考虑过使用 JSONObject,但我的字符串包含在 [ ] 中...我总是可以用 { } 替换它们,但仍然没有键...

最佳答案

我建议“ jackson ”。它将这个字符串解析为包含 3 个字符串和 1 个 map 的列表。

List<?> value = (List<?>) new ObjectMapper().readValue(
    "[\"Meal End\", \"meal-end\", \"menu\", {\"color\":\"black\", \"width\":1}]", 
    Object.class);
System.out.println(value.get(0));
Map<?, ?> map = (Map<?, ?>) value.get(3);
System.out.println(map.get("color"));

输出:

Meal End 
black

关于java - 如何在Java中将复杂的字符串转换为列表/数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48835255/

相关文章:

javascript - 如何使用 Angular.js ng-repeat 显示表内的数据数组

c - 汇编程序中的循环迭代不正确

PHP - 如何访问深层数组的内容,动态构建它的路径

php - 多维数组到PHP中的单个数组

java - 我可以使用 Java 将数据插入数据库,但无法选择并显示它

java - 如何使用 xuggler 库制作可执行文件 java

java - JOOQ 外键概念缺陷?

arrays - Postgresql:在两个数组中找到最接近的匹配对

java - 动态变化的嵌套 for 循环数量

java - 二维数组,对 Null 元素使用 get 方法,有一个优雅的解决方案吗?