0
こんにちは、私はjson構造を操作するための問題に直面しています。私はgsonの初心者です。私はIoTプラットフォームから複雑なjson構造を取得しています。構造の最初のレベル(tenantid、timestamp)の値を取得できますが、構造を深く知りたいときにクラッシュします。私は、このペイロードを通過するための要素をgsonのドキュメントに手助けすることが分かっていません。私はそれにクラスをマップしようとしました - それは、おそらく私のために複雑すぎる...働いていませんでした... あなたの助けてくれてありがとう!ここでgsonによるjson複雑なペイロード管理
/* The payload structure is as follow :
* {"payload":
* "{
* \"tenantId\":\"56ab3a090cf2f00fce9ad9\",
* \"timestamp\":\"2017-07-15T10:56:27.124Z\",
* \"firingRule\":
* {
* \"id\":\"0b4e0dcd-4634-4f2-96ce-7ceefd95b584\",
* \"name\":\"testFR0StreamSample02-01\",
* \"enabled\":true,
* \"matchingRuleIds\": [\"e57927-be87-48dd-be42-8c01d13004d0\"],
* \"aggregationKeys\": [\"metadata.source\"],
* \"firingType\":\"ALWAYS\"
* },
* \"matchingContext\":
* {
* \"tenantId\":\"56ab3a090cf600fce9ad9\",
* \"timestamp\":\"2017-07-15T10:56:27.114Z\",
* \"matchingRule\":
* {
* \"id\":\"e5ec7927-be7-48dd-be42-8c01d13004d0\",
* \"name\":\"Test temperature > 20\",
* \"enabled\":true,
* \"dataPredicate\":
* {
* \">\":[{\"var\":\"value.temperature\"},20]}},
* \"data\":
* {
* \"streamId\":\"android35739073120059\",
* \"timestamp\":\"2017-07-15T10:56:27.106Z\",
* \"location\":{\"lat\":48.872015,\"lon\":2.348264},
* \"model\":\"ModelOABDemoApp00\",
* \"value\":
* {
* \"revmin\":7505,
* \"hygrometry\":98,
* \"temperature\":92},
* \"tags\":[\"OABDemoApp.00\"],
* \"metadata\":
* {
* \"source\":\"URN:LO:NSID:SENSOR:TESTFLGAPPOAB00000\",
* \"connector\":\"mqtt\"
* }
* }
* }
* }"}
*/
//あなたはgetAsJsonObject()
を使用して、子JSONオブジェクトにアクセスすることができます私のコード
Gson gson = new Gson();
String sLiveObjectsPayload = "{\"tenantId\":\"56ab3a090cf2ff600fce9ad9\",\"timestamp\":\"2017-07-29T08:31:24.026Z\",\"firingRule\":{\"id\":\"0b4e0dcd-4634-4ef2-96ce-7ceefd95b584\",\"name\":\"testFR0StreamSample02-01\",\"enabled\":true,\"matchingRuleIds\":[\"e5ec7927-be87-48dd-be42-8c01d13004d0\"],\"aggregationKeys\":[\"metadata.source\"],\"firingType\":\"ALWAYS\"},\"matchingContext\":{\"tenantId\":\"56ab3a090cf2ff600fce9ad9\",\"timestamp\":\"2017-07-29T08:31:24.012Z\",\"matchingRule\":{\"id\":\"e5ec7927-be87-48dd-be42-8c01d13004d0\",\"name\":\"Test temperature > 20\",\"enabled\":true,\"dataPredicate\":{\">\":[{\"var\":\"value.temperature\"},20]}},\"data\":{\"streamId\":\"android357329073120059\",\"timestamp\":\"2017-07-29T08:31:23.992Z\",\"location\":{\"lat\":48.872015,\"lon\":2.348264},\"model\":\"ModelOABDemoApp00\",\"value\":{\"revmin\":9147,\"hygrometry\":70,\"temperature\":118},\"tags\":[\"OABDemoApp.00\"],\"metadata\":{\"source\":\"URN:LO:NSID:SENSOR:TESTFLGAPPOAB00000\",\"connector\":\"mqtt\"}}}}";
JsonObject jsonPayload ;
jsonPayload = gson.fromJson(sLiveObjectsPayload, JsonObject.class);
String sTenantId ;
String sTimeStamp ;
String sFiringRule ;
String sFiringRuleId ;
String sName ;
sTenantId = jsonPayload.get("tenantId").getAsString(); // ok
sTimeStamp = jsonPayload.get("timestamp").getAsString(); // ok
sFiringRuleId = jsonPayload.get("firingRule.id").getAsString(); // crash
sFiringRule = jsonPayload.get("firingRule").getAsString(); // crash
sName = jsonPayload.get("name").getAsString(); // crash
ありがとう、素晴らしい作品! – fragae