1つのエントリでJSONObjectをJSONArrayに強制します

マイクバクスター

JSONサーバーからデータを取得しています。これは、JSONObject(1つのオブジェクト)またはJSONArray(複数のオブジェクト)の形式で提供される場合があります。配列なのかオブジェクトなのかを検出する方法は知っていますが、問題は、オブジェクト用と配列用の2つの完全に別個のロジックビットが必要になることです。それは本当に汚れた解決策であり、私が驚いたのは、これ以上頻繁に尋ねられることはないということです。

私がやりたいのJSONは、がJSONObject(1つのオブジェクト)の場合、それをJSONArray(1つのエントリのみで)に変換することです。次に、JSONArraysを解釈するための通常のロジックに進むことができます

JSONはこのようにやってくるでしょう:

{
    "Changes":
    {
        "Row":
        {
            "@ChangeId":"17192386","@Type":"U","@TableName":"Change","@PK":"g1fbb6c7-abcf-e741-846c-b499baf5845d","@ColList":"date"
        },
        "Data":
        {
            "@date":"22/05/2014 09:03:00"
        }
    }
}

通常、RowDataオブジェクトには複数のレコードがあります。しかし、この場合、私はそれぞれに1つしかありません。私の通常の方法は次のとおりです。

JSONObject jsonObj = new JSONObject(jsonString);
JSONObject changes = jsonObj.getJSONObject("Changes");
JSONArray arrChanges = changes.getJSONArray("Row");
JSONArray arrData = changes.getJSONArray("Data");

// Cycle through arrays here

このコードは.getJSONArray("Row");回線上でクラッシュします。

これを回避するには、changesオブジェクトを取得した後、上記のように値が1つしかない場合でもRowDataオブジェクトオブジェクトを強制的にに入れてJSONArray、通常のロジックを続行できるようにします。これを行う方法はありますか?

Neetu Shrivastava

このメソッドを使用して、次のように変換JSONObjectJSONArrayます。

JSONObject jsonObj = new JSONObject(jsonString);
JSONObject changes = jsonObj.getJSONObject("Changes");
JSONArray arrChanges = covertJsonObjectToJsonArray(changes.get("Row"));
JSONArray arrData = covertJsonObjectToJsonArray(changes.get("Data"));


public  JSONArray covertJsonObjectToJsonArray(Object InsideArray) {

    JSONArray jsonArray;

    if (InsideArray instanceof JSONArray) {
        jsonArray = (JSONArray) InsideArray;
    } else {
        jsonArray = new JSONArray();
        jsonArray.put((JSONObject) InsideArray);
    }
    return jsonArray;
}

JSONArray存在する場合はを返しJSONArrayJSONOject存在する場合はを返しJSONArrayます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaはJsonArrayから1つのJSONObjectを取得します

分類Dev

D3強制レイアウトは1つのリンクのみを表示します

分類Dev

Java:JFileChooserを1つのディレクトリとそのサブフォルダに強制します

分類Dev

POSTリクエストでJSONArrayをJSONObjectに配置する際の問題

分類Dev

2つのJSONをJSONArrayではなくJSONObjectにマージします

分類Dev

1つのコマンドで複数のMacOSプロセスを動的に強制終了しますか?

分類Dev

配列のエントリを強制的に配列にしようとしています

分類Dev

リモートサーバーにSSHで接続し、特定のpidを見つけて強制終了します

分類Dev

文字列の最後に空白(htmlエンティティ?)を強制します(ビートトリム)

分類Dev

強制レイアウトでノードのエントリを設定します

分類Dev

Apache mod_rewrite:1つのサブドメインでHTTPSを強制し、別のサブドメインでHTTPを強制します

分類Dev

クエリ結果をカウントしますが、列の値ごとに1つの結果に制限します

分類Dev

マージントップを2つのインラインブロック要素の1つに強制します

分類Dev

express-リクエストを一度に1つに制限します

分類Dev

1つではなく2つのエントリを作成するように続編します

分類Dev

SQL:2つのカウントクエリを1つに結合します

分類Dev

SQL:2つのカウントクエリを1つに結合します

分類Dev

2つのカウントクエリを1つに結合します

分類Dev

LIBGDXのTextureAtlasの1つの画像に特定のスプライトを強制します

分類Dev

すべてのIISリクエストを1つのMVCコントローラーとアクションに強制的に送信するにはどうすればよいですか?

分類Dev

Flexbox /常に2列のレイアウトを強制します(入力はオブジェクトの1つの配列のみです)

分類Dev

特定のクエリ結果をエコーの下部に強制します

分類Dev

mysqlでは一度に1つのオープンエントリのみを許可します

分類Dev

extjsコンボボックスに最低1つのアイテムを強制しますか?

分類Dev

レストパラメータに少なくとも1つの引数を強制します

分類Dev

特定のWebサイト(つまりFacebook)のChrome(Chromium)でフォントを強制的に変更する方法

分類Dev

片側のエンティティで1対多の関係に完全に参加することを強制しますか?| SQL

分類Dev

QTableViewは1つのセルの選択を強制します

分類Dev

サーバーにインポートされたすべてのES6モジュールを1つのhttpリクエストで送信するように強制する方法

Related 関連記事

  1. 1

    JavaはJsonArrayから1つのJSONObjectを取得します

  2. 2

    D3強制レイアウトは1つのリンクのみを表示します

  3. 3

    Java:JFileChooserを1つのディレクトリとそのサブフォルダに強制します

  4. 4

    POSTリクエストでJSONArrayをJSONObjectに配置する際の問題

  5. 5

    2つのJSONをJSONArrayではなくJSONObjectにマージします

  6. 6

    1つのコマンドで複数のMacOSプロセスを動的に強制終了しますか?

  7. 7

    配列のエントリを強制的に配列にしようとしています

  8. 8

    リモートサーバーにSSHで接続し、特定のpidを見つけて強制終了します

  9. 9

    文字列の最後に空白(htmlエンティティ?)を強制します(ビートトリム)

  10. 10

    強制レイアウトでノードのエントリを設定します

  11. 11

    Apache mod_rewrite:1つのサブドメインでHTTPSを強制し、別のサブドメインでHTTPを強制します

  12. 12

    クエリ結果をカウントしますが、列の値ごとに1つの結果に制限します

  13. 13

    マージントップを2つのインラインブロック要素の1つに強制します

  14. 14

    express-リクエストを一度に1つに制限します

  15. 15

    1つではなく2つのエントリを作成するように続編します

  16. 16

    SQL:2つのカウントクエリを1つに結合します

  17. 17

    SQL:2つのカウントクエリを1つに結合します

  18. 18

    2つのカウントクエリを1つに結合します

  19. 19

    LIBGDXのTextureAtlasの1つの画像に特定のスプライトを強制します

  20. 20

    すべてのIISリクエストを1つのMVCコントローラーとアクションに強制的に送信するにはどうすればよいですか?

  21. 21

    Flexbox /常に2列のレイアウトを強制します(入力はオブジェクトの1つの配列のみです)

  22. 22

    特定のクエリ結果をエコーの下部に強制します

  23. 23

    mysqlでは一度に1つのオープンエントリのみを許可します

  24. 24

    extjsコンボボックスに最低1つのアイテムを強制しますか?

  25. 25

    レストパラメータに少なくとも1つの引数を強制します

  26. 26

    特定のWebサイト(つまりFacebook)のChrome(Chromium)でフォントを強制的に変更する方法

  27. 27

    片側のエンティティで1対多の関係に完全に参加することを強制しますか?| SQL

  28. 28

    QTableViewは1つのセルの選択を強制します

  29. 29

    サーバーにインポートされたすべてのES6モジュールを1つのhttpリクエストで送信するように強制する方法

ホットタグ

アーカイブ