2016-04-11 31 views
3

AWS JSONObject class kullanıyorum.JSONObject öğelerini bir bayt dizisine nasıl dönüştürebilirim ve sonra orijinal JSONObject öğesini geri almak için bu bayt dizisini dönüştürürüm?

byte[] objAsBytes = convertToBytes(obj); 
: Bu JSONObject almak ve bir şekilde, bir bayt dizisine dönüştürmek istediğiniz

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

: gibi

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

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

obj.put("Field2": nestedObj); 

Yani JSONObject nesnesi görünür: ı bir JSONObject nesne şöyle tanımlamak diyelim

Burada convertToBytes, bunu doğru yapan bazı işlevlerdir. Daha sonra bu bayt dizisini alıp orijinal yapısına geri döndürmek için orijinal JSONObject'a geri dönüştürmek istiyorum.

Bunu nasıl yapacağını bilen var mı? Ben bunu yapmak istiyorum Amazon Kinesis ve daha özel olarak PutRecord API kullanıyorum ve PutRecordRequest veri ByteBuffer olması gerekir, bu yüzden JSONObject bir bayt dizisine dönüştürmek ve daha sonra bayt dizisini ByteBuffer olarak sarma . Sonra, kayıt aldığımda, ByteBuffer bir bayt dizisine dönüştürmem ve daha sonra özgün JSONObject'i almam gerekir.

+0

@Pillar Üzgünüm 'JSONObject' kullanma konusunda deneyimli değilim. “JSONObject” i sadece bir String olarak temsil edip String dizisini Dize dönüşümlerine dize olarak kullanıp, JSONObject öğesinin orijinal yapısını korumalı mıyım diye ima ediyor musunuz? – Drew

+1

Evet 'JSONObject', JSON'un metinsel' String' temsilini verecek bir 'toString' yöntemine sahiptir. Ayrıca, bir JSON 'String'in argüman olarak kabul edilmesini ve metinden 'JSONObject''e dönüştürülmesini sağlayan bir kurucuya da sahip olmalıdır. – Savior

+1

JSON sadece bir String'dir, bu nedenle JSONObject, sözü edilen dizinin bir temsilinden başka bir şey değildir. Dizenin baytını [] alırsanız, her zaman nesneyi geri oluşturabilirsiniz. – dambros

cevap

3

Bu nasıl?

Ben de denemek Json.simple kullanılan
byte[] objAsBytes = obj.toString().getBytes("UTF-8"); 

, iş gibi görünüyor!

İlgili konular