[英]How to convert json in java?
我在cellHashMap
有此值
key = name
value = {name ={uri=/book/bookItem3(852)/header}}
我只想得到
book/bookItem3(852)/header
(最后一个_不带{uri =和}
我做了这段代码:
Map<String, Object> cellHashMap = (HashMap<String, Object>) cell.getValue();
String cellValue = cellHashMap.get("name").toString(); //$NON-NLS-1$
String[] splitCell = cellValue.split("uri=/"); //$NON-NLS-1$
return splitCell[1].substring(0, splitCell[1].length() - 1);
拆分的结果是:
splitCell[0] = {
splitCell[1] = sbook/bookItem3(852)/header}
它正在工作,但我认为这不是最好的方法
你知道更好的方法吗?
我的猜测是,您不希望解析JSON,因为如前所述,您的String毕竟不是JSON。 但是,您可以通过正常的String操作来解析此String,如下所示:
final static String str = "{name ={uri=/book/bookItem3(852)/header}}";
public static void main (String[] args) {
String value = str.substring((str.indexOf("uri=/") + "uri=/".length()), str.indexOf("}"));
System.out.println(value);
}
输出:
book / bookItem3(852)/ header
这不是JSON(请参阅上面的注释)。 如果您想解析所显示的内容(而不是您所说的内容),则可以使用以下内容:
int start = myString.indexOf("uri=");
if (start == -1) {
// handle "not found"
}
int end = myString.indexOf("}", start + "uri=".length());
if (end == -1) {
// handle "not found"
}
String goal = myString.substring(start + "uri=".length(), end);
// goal = "book/bookItem3(852)/header"
或正则表达式:
Matcher m = Pattern.compile("uri=([^}]+)").matcher(myString);
if (m.find()) {
goal = m.group(1); // "book/bookItem3(852)/header"
} else {
// handle not found
}
我不确定您是否有能力在字典中实际存储JSON值,但是如果您可以将格式更正为实际JSON,则可以使用JSONObject类来解析JSON字符串并检索数据。
String jsonstring = "The valid JSON string in your hashmap"
JSONObject json = new JSONObject(jsonstring)
String path = (String) json.get("name");
同样,此方法仅在您的哈希映射存储有效JSON时才有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.