Java에서 JSON 문자열로 지정된 이름과 값을 찾으려면 어떻게 해야 합니까?
다음 JSON 문자열이 있다고 가정합니다.
{
"name" : "John",
"age" : "20",
"address" : "some address",
"someobject" : {
"field" : "value"
}
}
필드를 찾는 가장 쉬운 방법(정규 표현은 허용되지 않음)은 무엇입니까?age
그 값(또는 지정된 이름을 가진 필드가 없다고 판단)을 확인합니다.
p.s. 오픈소스 립은 다 괜찮아요.
p.s.2: 라이브러리에 링크를 게시하지 마십시오. 유용한 답변이 아닙니다.'코드 표시' (c)
JSON 라이브러리를 사용하여 문자열을 해석하고 값을 가져옵니다.
다음의 매우 기본적인 예는 Android의 내장 JSON 파서를 사용하고 있습니다.
String jsonString = "{ \"name\" : \"John\", \"age\" : \"20\", \"address\" : \"some address\" }";
JSONObject jsonObject = new JSONObject(jsonString);
int age = jsonObject.getInt("age");
Jackson, google-gson, json-io 또는 genson과 같은 고급 JSON 라이브러리를 사용하면 JSON 개체를 Java 개체로 직접 변환할 수 있습니다.
Gson은 가능한 가장 간단한 솔루션 중 하나를 제공합니다.Jackson이나 svenson과 같은 유사한 API와 비교하여 Gson은 Java 구조에서 사용 가능한 바인딩을 사용하기 위해 사용되지 않는 JSON 요소도 기본적으로 필요하지 않습니다.질문에 대한 구체적인 해결 방법은 다음과 같습니다.
import com.google.gson.Gson;
public class Foo
{
static String jsonInput =
"{" +
"\"name\":\"John\"," +
"\"age\":\"20\"," +
"\"address\":\"some address\"," +
"\"someobject\":" +
"{" +
"\"field\":\"value\"" +
"}" +
"}";
String age;
public static void main(String[] args) throws Exception
{
Gson gson = new Gson();
Foo thing = gson.fromJson(jsonInput, Foo.class);
if (thing.age != null)
{
System.out.println("age is " + thing.age);
}
else
{
System.out.println("age element not present or value is null");
}
}
}
저는 구글의Gson
선명하고 사용하기 편리합니다.단, JSON 문자열에서 인스턴스를 가져오기 위한 결과 클래스를 만들어야 합니다.결과 클래스를 명확히 할 수 없는 경우json-simple
:
// import static org.hamcrest.CoreMatchers.is;
// import static org.junit.Assert.assertThat;
// import org.json.simple.JSONObject;
// import org.json.simple.JSONValue;
// import org.junit.Test;
@Test
public void json2Object() {
// given
String jsonString = "{\"name\" : \"John\",\"age\" : \"20\","
+ "\"address\" : \"some address\","
+ "\"someobject\" : {\"field\" : \"value\"}}";
// when
JSONObject object = (JSONObject) JSONValue.parse(jsonString);
// then
@SuppressWarnings("unchecked")
Set<String> keySet = object.keySet();
for (String key : keySet) {
Object value = object.get(key);
System.out.printf("%s=%s (%s)\n", key, value, value.getClass()
.getSimpleName());
}
assertThat(object.get("age").toString(), is("20"));
}
장점과 단점Gson
그리고.json-simple
사용자 정의 Java 객체의 장단점과 거의 유사합니다.Map
정의하는 오브젝트는 모든 필드(이름 및 유형)에 대해 명확하지만 다음 필드보다 유연성이 떨어집니다.Map
.
언급URL : https://stackoverflow.com/questions/6153176/how-to-find-specified-name-and-its-value-in-json-string-from-java
'programing' 카테고리의 다른 글
Oracle에서 테이블 열 정렬 (0) | 2023.03.28 |
---|---|
정의되지 않은 함수 curl_version 호출 (0) | 2023.03.28 |
ng-show(어레이 길이가 0일 경우) (0) | 2023.03.28 |
각도에서의 오류 처리JS http get 후 구성 (0) | 2023.03.28 |
WordPress 테마 개발 - 템플릿 엔진 (0) | 2023.03.28 |