如何将Object序列化为JSON?

Tia*_*ini 42 java android json

我需要将一些对象序列化为JSON并发送到WebService.我怎么能用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>();
    }

}
Run Code Online (Sandbox Code Playgroud)

我只放了类的变量和构造函数,但它也有getter和setter.所以如果有人可以帮忙请

Bit*_*man 67

没有注释的简单方法是使用Gson库

就那么简单:

Gson gson = new Gson();
String json = gson.toJson(listaDePontos);
Run Code Online (Sandbox Code Playgroud)


nas*_*ras 9

也可以使用Jackson库。

添加Maven依赖:

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId> 
  <artifactId>jackson-core</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

只需这样做:

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString( serializableObject );
Run Code Online (Sandbox Code Playgroud)


小智 7

我发现Json-ify POJO的最快捷最简单的方法就是使用Gson库. 此博客文章简要概述了使用该库.


Car*_*ras 5

您发出 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();
Run Code Online (Sandbox Code Playgroud)

你读缓冲区

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

创建一个JSONObject并将结果字符串传递给构造函数:

JSONObject json = new JSONObject(result);
Run Code Online (Sandbox Code Playgroud)

将 json 结果解析为您想要的变量:

String usuario= json.getString("usuario");
int idperon = json.getInt("idperson");
String nombre = json.getString("nombre");
Run Code Online (Sandbox Code Playgroud)

不要忘记导入:

import org.json.JSONObject;
Run Code Online (Sandbox Code Playgroud)