我需要从对象列表生成JSON。为此,我使用以下代码,但是有两个问题:


条目顺序得到更改
当显示JSON时,它将在所有\之前添加"




JSONObject jsonObj = new JSONObject();
for (Row row : rows) {
    jsonObj.put(row.getCode(),row.getValue());

}
myJson.put(jsonObj.toString());
System.err.println("myJson:" + myJson.toString());


输出量

myJson:["{\"1234445\":\"Jack"}"]


感谢Sotirios Delimanolis,从jsonObj删除.toString()后,第一个问题已解决。

最佳答案

我们在项目中使用比较器来获取Json数组的顺序。
我发布的是相同的,只是根据您的元素使用数组。

GetSortedList是数组接受数组并返回已排序列表的方法。
@

               List<JsonElement> lJaArray = null;
               lJaArray = getSortedList( lJaArrayUnsorted ); // theJson    array you want to sort.




公共静态列表getSortedList(JsonArray array)抛出JSONException
    {
        列表列表= new ArrayList();
        for(int i = 0; i         {
            list.add(array.get(i));
        }
        Collections.sort(清单,
                          新的Comparator()
                          {

@Override public int compare( JsonElement o1, JsonElement o2 ) { if( Integer.parseInt( o1.getAsJsonObject() .get( "com.tangoe.matrix.catalog.CatalogFeatureDetail" ) .getAsJsonObject() .get( "order" ) .toString() .replace( "\"", "" ) ) > Integer.parseInt( o2.getAsJsonObject() .get( "com.tangoe.matrix.catalog.CatalogFeatureDetail" ) .getAsJsonObject() .get( "order" ) .toString() .replace( "\"", "" ) ) ) { return 1; } else if( Integer.parseInt( o1.getAsJsonObject() .get( "com.tangoe.matrix.catalog.CatalogFeatureDetail" ) .getAsJsonObject() .get( "order" ) .toString() .replace( "\"", "" ) ) < Integer.parseInt( o2.getAsJsonObject() .get( "com.tangoe.matrix.catalog.CatalogFeatureDetail" ) .getAsJsonObject() .get( "order" ) .toString() .replace( "\"", "" ) ) ) { return -1; } else { return 0; } } } ); return list;}

       

我已经发布了元素,只需替换其中的数组元素即可。

10-06 03:19