您需要在此处使用JSON解析器库。例如,用 org.json 你可以解析它
String input = "{\"algorithm\": \n"+ "[ \n" + "{ \"key\": \"onGapLeft\", \"value\" : \"moveLeft\" }, \n" + "{ \"key\": \"onGapFront\", \"value\" : \"moveForward\" }, \n" + "{ \"key\": \"onGapRight\", \"value\" : \"moveRight\" }, \n" + "{ \"key\": \"default\", \"value\" : \"moveBackward\" } \n" + "] \n" + "}"; JSONObject root = new JSONObject(input); JSONArray map = root.getJSONArray("algorithm"); for (int i = 0; i < map.length(); i++) { JSONObject entry = map.getJSONObject(i); System.out.println(entry.getString("key") + ": " + entry.getString("value")); }
的 产量 强> :
onGapLeft: moveLeft onGapFront: moveForward onGapRight: moveRight default: moveBackward
我提出了几个步骤的解决方案。
的 1) 强> 让我们来看看~JSON String的不同部分。我们将使用一种模式来获得不同的 {.*} 部分 :
{.*}
public static void main(String[] args) throws Exception{ List<String> lines = new ArrayList<String>(); Pattern p = Pattern.compile("\\{.*\\}"); Matcher matcher = p.matcher(input); while (matcher.find()) { lines.add(matcher.group()); } }
(你应该看看 图案 和 匹配 )
现在, lines 包含4个字符串:
lines
{ "key": "onGapLeft", "value" : "moveLeft" } { "key": "onGapFront", "value" : "moveForward" } { "key": "onGapRight", "value" : "moveRight" } { "key": "default", "value" : "moveBackward" }
给定一个像其中之一的String,你可以通过调用删除大括号 String#replaceAll();
String#replaceAll();
List<String> cleanLines = new ArrayList<String>(); for(String line : lines) { //replace curly brackets with... nothing. //added a call to trim() in order to remove whitespace characters. cleanLines.add(line.replaceAll("[{}]","").trim()); }
(你应该看看 String String#replaceAll(String regex) )
现在, cleanLines 包含:
cleanLines
"key": "onGapLeft", "value" : "moveLeft" "key": "onGapFront", "value" : "moveForward" "key": "onGapRight", "value" : "moveRight" "key": "default", "value" : "moveBackward"
的 2) 强> 让我们解析其中一行:
给出如下行:
"key": "onGapLeft", "value" : "moveLeft"
你可以分开它 , 使用String#split()的字符。它会给你一个包含2个元素的String []:
,
//parts[0] = "key": "onGapLeft" //parts[1] = "value" : "moveLeft" String[] parts = line.split(",");
(你应该看看 String [] String#split(String regex) )
让我们清理那些部分(删除“”)并将它们分配给一些变量:
String keyStr = parts[0].replaceAll("\"","").trim(); //Now, key = key: onGapLeft String valueStr = parts[1].replaceAll("\"","").trim();//Now, value = value : moveLeft //Then, you split `key: onGapLeft` with character `:` String key = keyStr.split(":")[1].trim(); //And the same for `value : moveLeft` : String value = valueStr.split(":")[1].trim();
而已 !
你也应该看看 Oracle关于正则表达式的教程 (这个非常重要,你应该把时间花在它上面)。