簡體   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