2012-03-23 40 views
3

我有JSON字符串,每次都有動態名稱的嵌套對象。對於一個實例:APEX JSON反序列化

{ 
    "Objects": { 
     "dynamicName1": { 
      "name": "test" 
     }, 
     "dynamicName2": { 
      "name": "test" 
     } 
    } 
} 

我想知道你怎麼可以使用反序列化包裝類在APEX這個字符串?

我嘗試這樣做:

public class masterobj 
{ public childobj Objects;  
} 

public class childobj 
{ public el dynamicName1; 
    public el dynamicName2;  
} 

public class el 
{ public string name; 
} 

String s = '{"Objects":{"dynamicName1":{"name":"test"},"dynamicName2":{"name":"test"}}}'; 
masterobj mo = (masterobj)JSON.deserialize(s, masterobj.class); 

效果很好,當你已經宣佈在類的動態變量名稱爲每個嵌套對象。

的問題,問題是我怎麼能在包裝類使用動態變量,使這項工作。因爲對象名稱會有所不同,並且對象的數量也不同,所以我無法對名稱進行硬編碼,因爲它們每次都是不同的。

任何想法?

回答

3

您將無法使用json解析器的數據綁定功能反序列化結構,您需要使用streaming json parser來讀取它。

+4

爲什麼總是要與Salesforce的硬盤的方式? :) – 2012-03-23 03:00:07

+0

FWIW,作品有一些變化,使這更容易。 – superfell 2012-03-23 03:03:51

+0

@superfell你的鏈接不正確 – 2016-06-13 11:39:28

0

使用地圖:

public class masterobj 
{ 
    Map<String, el> Objects; 
}