:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>
예 :
import java.util.List;
import com.jayway.jsonpath.JsonPath;
public class TestJson {
private static final String JSON = "{\"data\":{\"mapping\":[{\"erp\":\"SYMIX\",\"plant\":\"RY1\",\"region\":\"NA\"},{\"erp\":\"SAP\",\"plant\":\"EXM\",\"region\":\"ASIA\"}]}}";
public static void main(String[] args) {
String erp = getErp("RY1");
System.out.println(erp);
}
private static String getErp(String plant) {
List<String> values = JsonPath.read(JSON, String.format("$.data.mapping.[?(@.plant==%s)].erp", plant));
return values.isEmpty() ? null : values.get(0);
}
}
출력은 다음과 같습니다 SYMIX
업데이트 된 날짜 :
좋아, 여기 버전은 파일에서 읽기 :
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import com.jayway.jsonpath.JsonPath;
public class TestJson {
public static void main(String[] args) throws Exception {
String pathToFile = "file.json";
String plant = "RY1";
File file = openFile(pathToFile);
String erp = readErpFromFile(file, plant);
System.out.println("Erp: " + erp);
}
private static String readErpFromFile(File file, String plant) throws Exception {
List<String> values = JsonPath.read(file, String.format("$.data.mapping.[?(@.plant==%s)].erp", plant));
return values.isEmpty() ? null : values.get(0);
}
private static File openFile(String strPath) throws IOException {
Path path = Paths.get(strPath);
System.out.println("Trying to read file: " + path.toAbsolutePath().toString());
return path.toFile();
}
}
그냥 파일의 경로 "file.json"문자열을 대체합니다.
json 라이브러리는 무엇을 사용하고 있습니까? –
매핑을 위해 하나의 pojo 클래스를 만들고 JSON 값을 사용하여 해당 클래스의 목록을 만들어야합니다. 그러면 목록에서 객체를 쉽게 얻을 수 있습니다. – Vickyexpert
@RakeshGR org.JSON을 사용하고 있습니다. –