簡體   English   中英

從java中的json字符串中提取值

[英]extract value from json string in java

我有一個json格式的字符串,我想從該json中提取某些值。 例如:

{"foo":"this is foo", "bar":{"nested_bar": "this is nested bar"} }

用戶可能要打印foobar或兩者都打印。

現在,我有一個簡單的類,它只能讀取平面json。

如何修改以下代碼以合並嵌套的json?

另一個問題是什么是表示要提取為平面json的標簽的好方法? 我正在傳遞數組。

public class JsonParser {

public static String[] tagsToExtract;



public JsonParser(String[] tags){
    tagsToExtract = tags;
}


public HashMap<String, Object> extractInformation(Text line) throws JSONException{
    HashMap<String, Object> outputHash = new HashMap<String, Object>();
    JSONObject jsn = new JSONObject(line.toString());
    for (int i =0; i < tagsToExtract.length; i++){
        outputHash.put(tagsToExtract[i],jsn.get(tagsToExtract[i].toString()));
    }
    return outputHash;

}

}

有很多Java JSON庫可以完全滿足您的要求。 一些比較受人尊敬的是:

您可以在此處找到有關各種選項的更深入討論: https : //stackoverflow.com/questions/338586/a-better-java-json-library

但是,如果您真的有興趣為其編寫自己的解析器,那么我將給出的提示是利用遞歸。 假設您有一個類似以下內容的JSON對象:

{
    prop1: (some value),
    prop2: (some value),
    ...
}

請注意,當您開始解析頂級對象時,您將執行與解析每個值時完全相同的操作-因為這些值本身可以只是另一個JSON對象。 因此,一種簡單的入門方法是編寫一個解析器,該解析器僅將鍵及其關聯的值作為字符串獲取,而無需處理這些值。 然后,對每個值再次調用相同的算法-依此類推,直到得到一個純值(字符串,數字等)的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM