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

时间:2018-02-16 21:40:18

标签: java arrays

我知道使用myString.split(",");可以正常工作,如果我只是用逗号分隔"a", "b", "c"之类的字符串,但是如果我有一个更复杂的字符串如下:

  

["用餐结束","用餐结束","菜单",{"颜色":"黑&# 34;,"宽度":1}]

我想分离出元素

  

"用餐结束"

     

"膳食端"

     

"菜单"

     

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

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

我想要整个花括号对象。我怎么能这样做,除了手动搜索整个字符串,当我找到{时停止,并在我到达时继续}?

我考虑过使用JSONObject,但是我的字符串包含在[]中...我总是可以用{}替换那些但是那时还没有键......

1 个答案:

答案 0 :(得分:1)

我建议“杰克逊”。它将此字符串解析为包含3个字符串和1个映射的列表。

theController.getForm().setStyle("-fx-background-color: #FF0000");
theController.getForm().add(button, 1, 1, 0, 0);
theController.getForm().setStyle("-fx-background-color: #0000FF");

输出:

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"));