我需要从对象列表生成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;}
我已经发布了元素,只需替换其中的数组元素即可。