Java 如何在将值添加到JSONArray时保持值的顺序?
我需要从对象列表生成JSON。为此,我使用以下代码,但我有两个问题:Java 如何在将值添加到JSONArray时保持值的顺序?,java,arrays,json,Java,Arrays,Json,我需要从对象列表生成JSON。为此,我使用以下代码,但我有两个问题: 条目的顺序将发生更改 当我显示JSON时,它会在所有“之前添加\ 输出 myJson:["{\"1234445\":\"Jack"}"] 多亏了Sotirios Delimanolis,从jsonObj中删除.toString()后,第一个问题就解决了。您不能 发件人: 据观察,JSON解析库在是否 它们不会使对象成员的顺序对调用可见 行为不依赖于成员的实现 排序将是互操作的,因为它们不会互操作 受这些差异的影响 您的实现
“
之前添加\
myJson:["{\"1234445\":\"Jack"}"]
多亏了Sotirios Delimanolis,从jsonObj中删除.toString()后,第一个问题就解决了。您不能
发件人:
据观察,JSON解析库在是否
它们不会使对象成员的顺序对调用可见
行为不依赖于成员的实现
排序将是互操作的,因为它们不会互操作
受这些差异的影响
您的实现似乎是那些“可互操作”的实现之一;对象成员的顺序并不重要
这意味着它可能会序列化包含成员a、b、c的对象,以便您将它们作为b、a、c进行迭代;对此您无能为力,只能自己自定义对象成员顺序。您不能
发件人:
据观察,JSON解析库在是否
它们不会使对象成员的顺序对调用可见
行为不依赖于成员的实现
排序将是互操作的,因为它们不会互操作
受这些差异的影响
您的实现似乎是那些“可互操作”的实现之一;对象成员的顺序并不重要
这意味着它可以序列化一个包含成员a、b、c的对象,这样您就可以将它们作为b、a、c进行迭代;除了自己定制对象成员顺序之外,您什么也做不了。我们在项目中使用comparator获得Json数组的顺序。 我发布的是同一个你只需使用你的数组就可以了 GetSortedList是数组接受数组并返回已排序列表的方法。 @
List lJaArray=null;
lJaArray=getSortedList(ljaarrayunsorded);//要排序的JSON数组。
公共静态列表getSortedList(JsonArray数组)抛出JSONException
{
列表=新的ArrayList();
对于(int i=0;i@覆盖
公共整数比较(JsonElement o1,
JsonElement(氧气)
{
if(Integer.parseInt(o1.getAsJsonObject())
.get(“com.tangoe.matrix.catalog.CatalogFeatureDetail”)
.getAsJsonObject()
.get(“订单”)
.toString()
.替换(“\”,
“”)>Integer.parseInt(o2.getAsJsonObject()
.get(“com.tangoe.matrix.catalog.CatalogFeatureDetail”)
.getAsJsonObject()
.get(“订单”)
.toString()
.替换(“\”,
"" ) ) )
{
返回1;
}
else if(Integer.parseInt(o1.getAsJsonObject())
.get(“com.tangoe.matrix.catalog.CatalogFeatureDetail”)
.getAsJsonObject()
.get(“订单”)
.toString()
.替换(“\”,
“”)
我已经发布了我的元素,只需替换其中的数组元素。我们在项目中使用comparator获取Json数组的顺序。 我发布的是同一个你只需使用你的数组就可以了 GetSortedList是数组接受数组并返回已排序列表的方法。 @
List lJaArray=null;
lJaArray=getSortedList(ljaarrayunsorded);//要排序的JSON数组。
公共静态列表getSortedList(JsonArray数组)抛出JSONException
{
列表=新的ArrayList();
对于(int i=0;i@覆盖
公共整数比较(JsonElement o1,
JsonElement(氧气)
{
if(Integer.parseInt(o1.getAsJsonObject())
myJson:["{\"1234445\":\"Jack"}"]
List<JsonElement> lJaArray = null;
lJaArray = getSortedList( lJaArrayUnsorted ); // theJson array you want to sort.
public static List getSortedList( JsonArray array ) throws JSONException
{
List list = new ArrayList();
for( int i = 0; i < array.size(); i++ )
{
list.add( array.get( i ) );
}
Collections.sort( list,
new 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;
}