0

JsonArrayを操作して別のJsonArrayのように見せようとしています。既存のJsonArrayにいくつかの文字列メソッドを実装しました。そして今、私はそれを別のJsonArrayに戻したいと思います。

コード

                Log.d("defaultArrayShuffled", defaultArray.toString());

                String temp = defaultArray.toString();
                String temp1= temp.replaceAll("_white_", "_");
                Log.d("temp1", temp1);

                JSONObject temp2 = new JSONObject();
                temp2.put("arr", temp1);
                Log.d("temp2", temp2.toString());
                replacingArray = temp2.getJSONArray("arr");

LogCAT

07-03 19:16:37.310: D/defaultArrayShuffled(8863): ["findhidden\/o_white_64.png","findhidden\/x_white_64.png","findhidden\/f_white_64.png","findhidden\/b_white_64.png","findhidden\/a_white_64.png","findhidden\/g_white_64.png","findhidden\/p_white_64.png","findhidden\/u_white_64.png","findhidden\/n_white_64.png","findhidden\/j_white_64.png","findhidden\/y_white_64.png","findhidden\/q_white_64.png","findhidden\/l_white_64.png","findhidden\/t_white_64.png","findhidden\/h_white_64.png","findhidden\/v_white_64.png","findhidden\/r_white_64.png","findhidden\/k_white_64.png","findhidden\/m_white_64.png","findhidden\/c_white_64.png","findhidden\/z_white_64.png","findhidden\/s_white_64.png","findhidden\/w_white_64.png","findhidden\/d_white_64.png","findhidden\/i_white_64.png","findhidden\/e_white_64.png"]
07-03 19:16:37.310: D/temp1(8863): ["findhidden\/o_64.png","findhidden\/x_64.png","findhidden\/f_64.png","findhidden\/b_64.png","findhidden\/a_64.png","findhidden\/g_64.png","findhidden\/p_64.png","findhidden\/u_64.png","findhidden\/n_64.png","findhidden\/j_64.png","findhidden\/y_64.png","findhidden\/q_64.png","findhidden\/l_64.png","findhidden\/t_64.png","findhidden\/h_64.png","findhidden\/v_64.png","findhidden\/r_64.png","findhidden\/k_64.png","findhidden\/m_64.png","findhidden\/c_64.png","findhidden\/z_64.png","findhidden\/s_64.png","findhidden\/w_64.png","findhidden\/d_64.png","findhidden\/i_64.png","findhidden\/e_64.png"]
07-03 19:16:37.310: D/temp2(8863): {"arr":"[\"findhidden\\\/o_64.png\",\"findhidden\\\/x_64.png\",\"findhidden\\\/f_64.png\",\"findhidden\\\/b_64.png\",\"findhidden\\\/a_64.png\",\"findhidden\\\/g_64.png\",\"findhidden\\\/p_64.png\",\"findhidden\\\/u_64.png\",\"findhidden\\\/n_64.png\",\"findhidden\\\/j_64.png\",\"findhidden\\\/y_64.png\",\"findhidden\\\/q_64.png\",\"findhidden\\\/l_64.png\",\"findhidden\\\/t_64.png\",\"findhidden\\\/h_64.png\",\"findhidden\\\/v_64.png\",\"findhidden\\\/r_64.png\",\"findhidden\\\/k_64.png\",\"findhidden\\\/m_64.png\",\"findhidden\\\/c_64.png\",\"findhidden\\\/z_64.png\",\"findhidden\\\/s_64.png\",\"findhidden\\\/w_64.png\",\"findhidden\\\/d_64.png\",\"findhidden\\\/i_64.png\",\"findhidden\\\/e_64.png\"]"}

その他のLOGCAT

07-03 19:16:37.320: W/System.err(8863):     at org.json.JSON.typeMismatch(JSON.java:96)
4

2 に答える 2

2

temp2のログ出力から、arrのjsonタイプはStringです。したがって、JSONArrayを取得しようとすると、typeMismatchが取得されます。

以下のコードが機能するかどうかを確認してください。JSONObjectのコンストラクターは、オブジェクトを含むJSONでエンコードされた文字列を受け取ることができます。したがって、これを使用してtemp2を作成します。

Log.d("defaultArrayShuffled", defaultArray.toString());

String temp = defaultArray.toString();
String temp1= temp.replaceAll("_white_", "_");
Log.d("temp1", temp1);

JSONObject temp2 = new JSONObject("{ \"arr\" : " + temp1 + "}");
//temp2.put("arr", temp1);
Log.d("temp2", temp2.toString());
replacingArray = temp2.getJSONArray("arr");

それが役に立てば幸い。

于 2012-07-03T14:36:00.013 に答える
0

いくつかのアイデア
-A.ジャクソンはより優れたJsonライブラリであると思います。使用を検討してください。より良いエラーメッセージが表示されます B.Jsonのシリアル化と逆シリアル化のためにwww.ovirt.org
行ったインフラストラクチャを使用して行ったのと同様に、次のコードを記述しました。

 String[] arr = { "aaa_white_.png", "bbb_white_.png", "ccc_white_.png", "ddd.png" };
        JsonObjectSerializer serialezer = new JsonObjectSerializer();
        String payload = serialezer.serialize(arr);
        String newPayload = payload.replaceAll("_white_", "_");
        JsonObjectDeserializer der = new JsonObjectDeserializer();
        String[] res = (String[]) der.deserialize(newPayload, String[].class);
        System.out.println(payload);
        System.out.println(res);
        for (String str : res) {
            System.out.println(str);
        }

あなたは私たちのコードをgitcloneすることができます、そしてあなたは私ovirt-engine/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json たちがそこで何をしたかを見るために見るべきです。

于 2012-07-03T14:23:55.607 に答える