繁体   English   中英

如何在Java中转换JSON?

[英]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时才有效。

JSONObject Javadoc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM