2016-04-11 1 views
3

私はAWS JSONObject classを使用しています。のは、私はそうのようなJSONObjectオブジェクトを定義しましょう:JSONObjectをバイト配列に変換し、元のJSONObjectを取得するためにこのバイト配列を変換するにはどうすればよいですか?

JSONObject obj = new JSONObject(); 
obj.put("Field1": 35); 

JSONObject nestedObj = new JSONObject(); 
nestedObj.put("Name1":"value1"); 
nestedObj.put("Name2":42); 

obj.put("Field2": nestedObj); 

のでJSONObjectは、次のようになります。

{"Field1": 35, 
"Field2": {"Name1": "value1", 
      "Name2": 42} 
} 

私はこのJSONObjectを取り、何とかバイト配列に変換したい:

byte[] objAsBytes = convertToBytes(obj); 

ここで、convertToBytesはこれを正しく行う機能です。次に、このバイト配列を元のJSONObjectに戻して元の構造をそのまま保持したいと思います。

誰でもこれを行う方法を知っていますか?私はAmazon Kinesisを使用しています。具体的にはPutRecord APIとPutRecordRequestにはデータがByteBufferである必要がありますので、JSONObjectをバイト配列に変換してから、ByteBuffer 。次に、レコードを取得するときに、ByteBufferをバイト配列に変換して元のJSONObjectを取得する必要があります。

+0

@Pillar申し訳ありません、私は 'JSONObject'の使用経験はありません。 'JSONObject'を文字列として表現し、その文字列を文字列変換にバイト配列を使って' JSONObject'の元の構造体を保存する必要があるのではないかと思いますか? – Drew

+1

ええ 'JSONObject'には、JSONのテキスト形式の' String'表現を与える 'toString'メソッドがあります。また、JSONの 'String'を引数として受け取り、テキストから' JSONObject'に変換するコンストラクタも必要です。 – Savior

+1

JSONは単なるStringなので、JSONObjectはその文字列の表現に過ぎません。文字列のbyte []を取得した場合、いつでもオブジェクトを元に戻すことができます。 – dambros

答えて

3

これはいかがですか?

byte[] objAsBytes = obj.toString().getBytes("UTF-8"); 

私はそれを試してJson.simpleを使用し、動作しているようです!

関連する問題