2 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
與往常一樣,有幾種可能的方法。
除了手動(dòng)解析和提取方法(如何在 Spring 中加載資源并將其內(nèi)容用作字符串),您還可以嘗試更高級(jí)的方法并使用像 jackson-databind 這樣的庫(kù)(https://github.com/FasterXML /杰克遜數(shù)據(jù)綁定)。
假設(shè)您的資源中有這個(gè) json 對(duì)象:
{
"foo" : {
"bar" : 42
}
}
并且 Jackson ObjectMapper 已經(jīng)注入:
@Autowired
private ObjectMapper objectMapper;
選項(xiàng) 1:對(duì) JsonNode 使用通用方法
@Autowired
ObjectMapper objectMapper;
@RequestMapping("/")
JsonNode home() throws IOException {
JsonNode jsonNode = objectMapper.readTree(resourceFile.getFile());
return jsonNode.get("foo").get("bar");
}
選項(xiàng) 2:https : //github.com/FasterXML/jackson-databind#1-minute-tutorial-pojos-to-json-and-back

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
這只是帶有一些建議的@ibexit 答案的變體。
在 ibexit 答案中使用選項(xiàng) 2(使用 pojo),除非您確實(shí)需要 JsonNode(您需要 JsonNode 的可能性舍入為 0%)。
創(chuàng)建一個(gè) POJO 將您的 Json 表示為一個(gè)對(duì)象。請(qǐng)參閱下面的示例。
我建議您使用@JsonIgnoreProperties(ignoreUnknown = true)注釋。進(jìn)行谷歌搜索。
在您的示例中,不需要使用@JsonProperty注釋,但我喜歡使用它。
還有其他方法可以設(shè)置“ignoreUnknown”值,Jackson 文檔是一本很好且有價(jià)值的讀物。
POJO 示例
@JsonIgnoreProperties(ignoreUnknown = true)
public class TopClass
{
@JsonProperty("foo") // This is optional in your example.
private Foo foo;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo
{
@JsonProperty("bar")
private int bar;
}
讀取 POJO 的示例代碼
private TopClass topClassVariableName;
topClassVariableName = objectMapper.readValue(JSON HERE, TopClass.class);
添加回答
舉報(bào)