개체를 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
'programing' 카테고리의 다른 글
Spring의 GA, RC 및 M2 릴리즈의 차이점은 무엇입니까? (0) | 2023.02.15 |
---|---|
XmlDocument - 문자열에서 로드하시겠습니까? (0) | 2023.02.15 |
Wordpress 플러그인 API로 .htaccess를 편집하시겠습니까? (0) | 2023.02.15 |
봄 MVC 3에서는 ModelAndView를 반환하면서 쿠키를 작성하는 방법은 무엇입니까? (0) | 2023.02.15 |
다중 인수가 있는 각도 ng-if=" (0) | 2023.02.15 |