APIで取得したJSONの変換方法

概要

deserializeUntypedでJSONをMAP<String, Object>にキャストします。

JSONパターン1(ネストなし)

 {
    "id": 1,
    "name": "ねこ",
    "phone": "03-0000-0001",
    "fax": "03-0000-0002"
  }

Apex

Map<String, Object> resultJSON = (Map<String, Object>)JSON.deserializeUntyped(response.getBody());
String result = String.valueOf(resultJSON.get('name'));

これで"ねこ"がString型変数のresultに入りました。

JSONパターン2(ネストあり)

{
  "cat1" : {
  "name": "ちろ",
   "age" :  "12",
   "weight" : "2"
},
"cat2" : {
   "name": "ちゃろ",
   "age" :  "24",
   "weight" : "3"
},
"cat3" : {
   "name": "ちょこ",
   "age" :  "36",
   "weight" : "4"
}}

Apex

Map<String, Object> resultJSON = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
Map<String,Object> resultCat1 = (Map<String,Object>) resultJSON.get('cat1');
String result = (String)resultCat1.get('name');

これで"ちろ"がString型変数のresultに入りました。

Salesforce

Posted by regardie