2012-03-23 87 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; 
}