Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从对象创建json字符串–;它返回一个空的";[]是什么;?_Java_Json_String_Object_Gson - Fatal编程技术网

Java 如何从对象创建json字符串–;它返回一个空的";[]是什么;?

Java 如何从对象创建json字符串–;它返回一个空的";[]是什么;?,java,json,string,object,gson,Java,Json,String,Object,Gson,我正在尝试创建一个方法,该方法返回一个json字符串,其中填充了样本数据。我已经创建了一个数据构造函数类,但当我创建一个数据对象并随后打印它时,出于某种原因,它返回一个空json:“[]”? 我错过了什么?为什么它不返回我刚刚创建的数据对象 这是我的主要课程: public class SimulatedDevice { public static void printObject(Object object) { Gson gson = new GsonBuilder

我正在尝试创建一个方法,该方法返回一个json字符串,其中填充了样本数据。我已经创建了一个数据构造函数类,但当我创建一个数据对象并随后打印它时,出于某种原因,它返回一个空json:“[]”? 我错过了什么?为什么它不返回我刚刚创建的数据对象

这是我的主要课程:

public class SimulatedDevice {

    public static void printObject(Object object) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(object));
        }


    public static class TelemetryDataPoint {

      public String CreateTelemetryDataPoint() {
        ArrayList<Data.TrendData> trendData = new ArrayList<>();
        trendData.add(new Data.TrendData("Building1", "2018-08-28T01:03:02.997301Z", 2, "occupants", "int"));
        Data data = new Data("B1", "0", "0", trendData);
        printObject(data);
        String json = new Gson().toJson(data);
        return json;
      }

     }
    }
公共类模拟设备{
公共静态void打印对象(对象){
Gson Gson=new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(object));
}
公共静态类遥测数据点{
公共字符串CreateTelemetryDataPoint(){
ArrayList trendData=新的ArrayList();
trendData.add(新数据trendData(“Building1”,“2018-08-28T01:03:02.997301Z”,2,“居住者”,“内部”));
数据数据=新数据(“B1”、“0”、“0”、趋势数据);
打印对象(数据);
字符串json=new Gson().toJson(数据);
返回json;
}
}
}
这是我的数据构造函数:

package com.microsoft.docs.iothub.samples;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.sql.Time;
import java.util.ArrayList;
import java.util.List;


public class Data extends ArrayList {
    String Building;
    String Floor;
    String Zone;
    ArrayList<TrendData> Trend;

    public Data(String Building, String Floor, String Zone, ArrayList<TrendData> Trend) {
        this.Building = Building;
        this.Floor = Floor;
        this.Zone = Zone;
        this.Trend = Trend;
}

    public static class TrendData {
        String PointId;
        String Timestamp;
        int Value;
        String Type;
        String Unit;

        public TrendData(String PointId, String Timestamp, int Value, String Type, String Unit) {
            this.PointId = PointId;
            this.Timestamp = Timestamp;
            this.Value = Value;
            this.Type = Type;
            this.Unit = Unit;

        }
    }
package com.microsoft.docs.iothub.samples;
导入com.google.gson.gson;
导入com.google.gson.GsonBuilder;
导入java.sql.Time;
导入java.util.ArrayList;
导入java.util.List;
公共类数据扩展了ArrayList{
弦乐楼;
串层;
弦带;
阵列主义趋势;
公共数据(字符串建筑、字符串楼层、字符串分区、阵列列表趋势){
这个。建筑=建筑;
这个。地板=地板;
这个区域=区域;
这个趋势=趋势;
}
公共静态类数据{
字符串点ID;
字符串时间戳;
int值;
字符串类型;
弦单元;
公共趋势数据(字符串点ID、字符串时间戳、int值、字符串类型、字符串单位){
this.PointId=PointId;
this.Timestamp=时间戳;
这个。值=值;
this.Type=Type;
这个。单位=单位;
}
}

如果从数据声明中删除“extends ArrayList”,它将正常工作。我还没有对它进行足够的调试,以找出Gson不喜欢基类为ArrayList的原因

以下是一个可能的解释: