2016-03-30 28 views
1

json String {"k": "v"、 "a": "b"}がある場合。JSON文字列をクロスプラットフォームに変換するときの同じJSON文字列

jsonオブジェクトに変換してからJavaのStringに戻すと、Gsonライブラリを使用して何らかのデータベースに格納されます。

また、私はそれをjson Objectに変換してPythonのStringに戻します.jsonオブジェクトでもStringを{"a": "b"、 "k": "v"}として取得することは可能です。同じですが、今度は注文が変更されたので文字列の一致を行うことができません。

どうすればこの問題を解決できますか?

+0

あなたは[ 'OrderedDict'](http://stackoverflow.com/a/6921760/887828)を使用することができます私は思います。 – Sevanteri

+0

なぜオブジェクトの比較をしないのですか? – Kennet

+0

@Kennet、データベースは文字列の比較のみをサポートしますが、比較はJVMまたはPythonの内部ではありません。 – Peter

答えて

0

JSONをデータベースにシリアル化する際に、キーが常にソート順であることを確認してください。 Pythonでは、次のように記述します:

json.dumps(obj, sort_keys=True) 

これは難しいですが、別のライブラリを使う必要があります。

+0

jsonもそうでなければ、この解決策は動作しません。 – Peter

+0

@Peter in Python、yes。 Javaが問題になるだろう。 –

1

jsonオブジェクトキーの順序が同じであるという保証はありません。

JSONオブジェクトはspeceficationによって順不同ある:http://json.org/

オブジェクトは、名前/値のペアの順序なし集合です。

何らかの注文が必要な場合は、jsonオブジェクトの代わりにjson配列を使用する必要があります。

配列は値の順序付き集合です。

も参照してください。ECMAScript Language Specification

関連する問題