programing

개체를 JSON에 직렬화하는 방법

newsource 2023. 2. 15. 22:05

개체를 JSON에 직렬화하는 방법

일부 개체를 JSON에 직렬화하고 웹 서비스로 전송해야 합니다.org.json 라이브러리를 사용하여 어떻게 해야 하나요?아니면 다른 걸 써야 하나요?시리얼화해야 할 클래스는 다음과 같습니다.

public class PontosUsuario {

    public int idUsuario;
    public String nomeUsuario;
    public String CPF;
    public String email;
    public String sigla;
    public String senha;
    public String instituicao;

    public ArrayList<Ponto> listaDePontos;


    public PontosUsuario()
    {
        //criando a lista
        listaDePontos = new ArrayList<Ponto>();
    }

}

변수와 클래스 생성자만 넣었지만 getters와 setters도 있습니다.그러니 누군가 도와줄 수 있다면

주석을 사용하지 않고 쉽게 실행할 수 있는 방법은 Gson 라이브러리를 사용하는 것입니다.

심플:

Gson gson = new Gson();
String json = gson.toJson(listaDePontos);

잭슨 도서관도 이용할 수 있다.

Maven 종속성 추가:

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId> 
  <artifactId>jackson-core</artifactId>
</dependency>

간단하게 다음 작업을 수행합니다.

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString( serializableObject );

Json-ify POJOs에 대한 가장 빠르고 쉬운 방법은 Gson 라이브러리를 사용하는 것입니다.이 블로그 투고에서는 라이브러리 사용에 대해 간단히 설명합니다.

http 요청을 합니다.

HttpResponse response = httpclient.execute(httpget);           
HttpEntity entity = response.getEntity();

inputStream = entity.getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();

버퍼를 읽다

String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
Log.d("Result", sb.toString());
result = sb.toString();

JSONObject를 만들고 결과 문자열을 생성자에게 전달합니다.

JSONObject json = new JSONObject(result);

json 결과를 원하는 변수로 해석합니다.

String usuario= json.getString("usuario");
int idperon = json.getInt("idperson");
String nombre = json.getString("nombre");

잊지 말고 Import:

import org.json.JSONObject;

GSON은 사용하기 쉽고 메모리 설치 공간이 비교적 작습니다.설치 공간이 더 작으면 다음을 수행할 수 있습니다.

https://github.com/ko5tik/jsonserializer

이것은 POJO만을 위한 GSON 라이브러리 주변의 작은 포장지입니다.

Sean Leary의 "참조" Java 구현은 여기 github에 있습니다.2009년부터 버그가 있는 구버전을 입수할 수 있도록 최신 버전을 준비해 주세요.

Java EE 7에는 JSON API가 있습니다.javax.json자바독을 참조해 주세요.제가 알기로는 JSON에 오브젝트를 마샬링하는 간단한 방법이 없습니다.JsonObject또는JsonArray.

import javax.json.*;

JsonObject value = Json.createObjectBuilder()
 .add("firstName", "John")
 .add("lastName", "Smith")
 .add("age", 25)
 .add("address", Json.createObjectBuilder()
     .add("streetAddress", "21 2nd Street")
     .add("city", "New York")
     .add("state", "NY")
     .add("postalCode", "10021"))
 .add("phoneNumber", Json.createArrayBuilder()
     .add(Json.createObjectBuilder()
         .add("type", "home")
         .add("number", "212 555-1234"))
     .add(Json.createObjectBuilder()
         .add("type", "fax")
         .add("number", "646 555-4567")))
 .build();

JsonWriter jsonWriter = Json.createWriter(...);
jsonWriter.writeObject(value);
jsonWriter.close();

다만, GSON등의 다른 라이브러리에는, 이러한 인터페이스를 실장하는 오브젝트를 작성하기 위한 어댑터가 있습니다.

JAVAEE8 공개 후 새로운 JAVAEE API JSON-B(JSR367)를 사용할 수 있게 되었습니다.

Maven 의존관계:

<dependency>
    <groupId>javax.json.bind</groupId>
    <artifactId>javax.json.bind-api</artifactId>
    <version>1.0</version>
</dependency>

<dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>1.0</version>
</dependency>

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1</version>
</dependency>

다음은 코드 스냅샷입니다.

Jsonb jsonb = JsonbBuilder.create();
// Two important API : toJson fromJson
String result = jsonb.toJson(listaDePontos);

JSON-P도 1.1로 업데이트 되어 사용이 용이합니다.JSON-P 1.1(JSR374)

Maven 의존관계:

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
</dependency>

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1</version>
</dependency>

다음은 실행 가능한 코드 스냅샷입니다.

String data = "{\"name\":\"Json\","
                + "\"age\": 29,"
                + " \"phoneNumber\": [10000,12000],"
                + "\"address\": \"test\"}";
        JsonObject original = Json.createReader(new StringReader(data)).readObject();
        /**getValue*/
        JsonPointer pAge = Json.createPointer("/age");
        JsonValue v = pAge.getValue(original);
        System.out.println("age is " + v.toString());
        JsonPointer pPhone = Json.createPointer("/phoneNumber/1");
        System.out.println("phoneNumber 2 is " + pPhone.getValue(original).toString());

언급URL : https://stackoverflow.com/questions/16607444/how-to-serialize-object-to-json