2017-09-14 18 views
0

我有一個JSON文件,如下這我得到來自其他API響應:解析JSON響應特定一個JSONObjects - JAVA

{ 
    "label": " MARA LEYZIN", 
    "ClassCode": "PROFESSIONAL", 
    "actvFlg": "A", 
    "name": "MARA LEYZIN", 
    "Typ": { 
    "label": "C_TYP_LU", 
    "TypCode": "PROFESSIONAL " 
    }, 
    "Address": { 
    "link": [], 
    "firstRecord": 1, 
    "pageSize": 10, 
    "searchToken": "multi", 
    "item": [ 
     { 
     "label": "Address", 
     "addrTypFk": { 
      "label": "C_ADDRESS_TYPE_LU", 
      "addrTypCd": "INDUSTRY", 
      "addrTypDesc": "Industry" 
     } 
} 
] 
} 

我試圖在Java中,並解析這個刪除一些不需要的json對象。就像我想用空替換以下字符串:

"link": [], 
    "firstRecord": 1, 
    "pageSize": 10, 
    "searchToken": "multi", 
    "item": 

要做到這一點,我嘗試以下方法:

String jsonStr = new String(Files.readAllBytes(Paths.get(inputFile))); 
System.out.println(jsonStr); 
jsonStr.replaceAll("link", ""); 

但它沒有用空格代替必需的字符串。請幫助我。

+0

您沒有將它轉換爲使用JSON庫的JSON對象。你目前正在做的是字符串替換,它會以不正確的JSON結束(請注意,字符串是不可變的,你只是替換。)。要移除一個JSON對象,首先將其解析爲JSON對象,並使特定對象無效或使用'@ JsonIgnore'或等價物。 –

+2

字符串是不可變的。 replaceAll產生你沒有得到的新的String。它仍然不能按預期工作,它只會離開「」而不是鏈接。爲什麼不只是不跳過解析這個字段而不是改變響應內容? – mhenryk

回答

0

字符串對象是不可改變的,所以基本上,如果你想更換一些
System.out.println(jsonStr.replaceAll("link", ""));這將打印替換字符串,但它不會影響到原始的字符串,但是如果你這樣做

jsonStr=jsonStr.replaceAll("link", ""); 

System.out.println(jsonStr);這將打印被替換的字符串

0

首先: 您的JSON無法驗證。你錯過了一個結束的花括號。

{ 
"label": " MARA LEYZIN", 
"ClassCode": "PROFESSIONAL", 
"actvFlg": "A", 
"name": "MARA LEYZIN", 
"Typ": { 
    "label": "C_TYP_LU", 
    "TypCode": "PROFESSIONAL " 
}, 
"Address": { 
    "link": [], 
    "firstRecord": 1, 
    "pageSize": 10, 
    "searchToken": "multi", 
    "item": [{ 
     "label": "Address", 
     "addrTypFk": { 
      "label": "C_ADDRESS_TYPE_LU", 
      "addrTypCd": "INDUSTRY", 
      "addrTypDesc": "Industry" 
     } 
    }] 
} 

}

所有第二,你應該只需要改變你的命令的順序是:

jsonStr.replaceAll("link", ""); 
System.out.println(jsonStr); 

重要補充: 我會建議你使用org.json庫,或者是更好的JACKSON來解析JSON文件。

Here's tutorial如何使用傑克遜,這是我最溫暖的建議。 你會節省很多時間,你可以做任何你喜歡的事情。