programing

Java에서 JSON 문자열로 지정된 이름과 값을 찾으려면 어떻게 해야 합니까?

lastmoon 2023. 3. 28. 22:30
반응형

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

반응형