json编码的对象和数组的数组在Java中为PHP


JSON-encode an array of objects and arrays in Java for PHP

我读过很多关于它的答案,但有时它们是数组,有些是对象,这里它们都在一起。

我在数组中存储了同一对象的多个变量。现在我想将所有这些转换为字符串,这样我就可以通过HTTP POST请求发送到服务器,然后PHP必须能够用JSON解码读取它们。

这就是Android应用中的Java代码:

对象类

class DataMisurati {
    float valori[]=new float[3];
    long tempo;
    DataMisurati() {  }
    DataMisurati(float[] values, long temp) { 
        this.valori[0] = values[0]; 
        this.valori[1] = values[1]; 
        this.valori[2] = values[2]; 
        this.tempo=temp;
    }
  }

这里是一些主代码:

DataMisurati[] daticompleti;
//now i fill the array daticompleti
//here must be the code to Json the array of objects and then convert it to string

然后必须有HTTP post发送字符串

我绝对同意Vinnie认为GSON是可行的方法。我个人建议您跳过聪明的对象绑定,转而关注JSONWriter类。这比Gson.toJson()方法快得多(它在幕后不做反射魔法),使用更少的内存和更好的可伸缩性。缺点是您需要编写更多代码来编码JSON,但我认为在受限的移动平台上工作时,这是值得的权衡。

使用JSONWriter也意味着你只需要导入GSON流包到你的应用程序(14kb),而不是完整的GSON包(515kb)。

我相信GSON流包本质上是谷歌捆绑到最新版本的Android框架。

我发现Gson是最容易处理自定义对象的。首先从这里下载Gson jar: http://code.google.com/p/google-gson/downloads/list

然后,将jar导入到您的项目中,根据您使用的IDE,这一操作略有不同。一旦将jar放入项目中,请在顶部执行import语句,其中所有其他import语句都是:

import com.google.gson.Gson;

然后像这样从对象到字符串:

Gson gson = new Gson();
String jsonString = gson.toJson(daticompleti);

然后,在你的http连接中,你想这样设置请求实体:

request.setEntity(new ByteArrayEntity(jsonString.getBytes("UTF8")));

或者其他连接的东西。重要的是要使用getBytes,因为post主体使用原始数据。