Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 - Fatal编程技术网

在java中从列表转换为json

在java中从列表转换为json,java,json,Java,Json,我有一个列表,我想把它转换成json 这是我的密码 JqGridModel gridModel1 = new JqGridModel(); Date FromDate = new Date("1996-07-04"); Date ToDate = new Date("1996-07-05"); gridModel1.setOrderID(10248); gridModel1.setFromDate(FromDate); gridModel1.setToDate(ToDate); gridMode

我有一个列表,我想把它转换成json

这是我的密码

JqGridModel gridModel1 = new JqGridModel();
Date FromDate = new Date("1996-07-04");
Date ToDate = new Date("1996-07-05");
gridModel1.setOrderID(10248);
gridModel1.setFromDate(FromDate);
gridModel1.setToDate(ToDate);
gridModel1.setCustomerID("WILMK");
gridModel1.setShipName("Vins et alcools Chevalier");

JqGridModel gridModel2 = new JqGridModel();
Date FromDate2 = new Date("1996-07-04");
Date ToDate2 = new Date("1996-07-05");
gridModel2.setOrderID(10248);
gridModel2.setFromDate(FromDate2);
gridModel2.setToDate(ToDate2);
gridModel2.setCustomerID("WILMK");
gridModel2.setShipName("Vins et alcools Chevalier");



List jqGridModels = new ArrayList();
jqGridModels.add(gridModel1);
jqGridModels.add(gridModel2);
我想将其转换为以下格式:

{ 
    "rows":[
        {"OrderID":"10248","FromDate":"1996-07-04","CustomerID":"WILMK","ShipName":"Vins et alcools Chevalier","ToDate":"1996-07-05"},
        {"OrderID":"10249","FromDate":"1996-07-05","CustomerID":"TRADH","ShipName":"Toms Spezialit\u00e4ten","ToDate":"1996-07-17"},
        {"OrderID":"10250","FromDate":"1996-07-08","CustomerID":"HANAR","ShipName":"Hanari Carnes","ToDate":"1996-07-26"},
        {"OrderID":"10251","FromDate":"1996-07-08","CustomerID":"VICTE","ShipName":"Victuailles en stock","ToDate":"1996-08-01"},
        {"OrderID":"10252","FromDate":"1996-07-09","CustomerID":"SUPRD","ShipName":"Supr\u00eames d\u00e9lices","ToDate":"1996-08-01"}
    ]
}

任何帮助都将不胜感激。

如果您想手动操作,您可以:

创建从tour对象生成JSON的方法:

class JqGridModel{

    public JSONObject toJSON(){
        JSONObject json = new JSONObject();
        json.accumulate("OrderID", orderID);
        // DO the same for all attributes
        return  json;
    }
}
然后在列表内容上调用此方法循环:

JSONObject json = new JSONObject();
JSONArray arr = new JSONArray();
for(JqGridModel m: jqGridModels){
     arr.put(m.toJSON());
}
json.accumulate("rows", arr);
首先:使用泛型

List jqGridModels = new ArrayList();  //bad
List<JqGridModel> jqGridModels = new ArrayList<>();  //good
List jqGridModels=new ArrayList()//坏的
List jqGridModels=newarraylist()//好的
第二:你能用Gson吗

List<JqGridModel> jqGridModels = new ArrayList<>();

Gson gson = new Gson();
JsonElement jsElem = gson.toJsonTree(jqGridModels, new TypeToken<List<JqGridModel>>() {}.getType());

if (! jsElem.isJsonArray()) {
    //this is an error...
}

JsonArray jsonArray = jsElem.getAsJsonArray();
List jqGridModels=new ArrayList();
Gson Gson=新的Gson();
JsonElement jsElem=gson.toJsonTree(jqGridModels,new-TypeToken(){}.getType());
如果(!jsElem.isJsonArray()){
//这是一个错误。。。
}
JsonArray JsonArray=jsElem.getAsJsonArray();

还没有测试它,但它应该工作,我在我的项目中这样做,这是好的,如果你有更多的麻烦,请告诉我

尝试使用类似jackson的Json库。可能重复的尝试此>>您是否知道您链接到我提出的问题可能是重复的?:)@维克兰特卡希亚普
    com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
    StringBuffer result = new StringBuffer("{\n\t\"rows\":[\n");
    try {
        for(Object item : jqGridModels){
            result = result.append("\t\t\t");
            result = result.append(mapper.writeValueAsString(item));
            result = result.append("\n");
        }
        if(jqGridModels.size() > 1){
            result = result.append("\t]\n}");
            System.out.print(result);
        }
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }