Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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 如何在将值添加到JSONArray时保持值的顺序?_Java_Arrays_Json - Fatal编程技术网

Java 如何在将值添加到JSONArray时保持值的顺序?

Java 如何在将值添加到JSONArray时保持值的顺序?,java,arrays,json,Java,Arrays,Json,我需要从对象列表生成JSON。为此,我使用以下代码,但我有两个问题: 条目的顺序将发生更改 当我显示JSON时,它会在所有“之前添加\ 输出 myJson:["{\"1234445\":\"Jack"}"] 多亏了Sotirios Delimanolis,从jsonObj中删除.toString()后,第一个问题就解决了。您不能 发件人: 据观察,JSON解析库在是否 它们不会使对象成员的顺序对调用可见 行为不依赖于成员的实现 排序将是互操作的,因为它们不会互操作 受这些差异的影响 您的实现

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

  • 条目的顺序将发生更改
  • 当我显示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;
    
    }