我有一个这样的json,我在http call
的响应中得到了{
"offset": 0,
"limit": 50,
"objects": [
{
"id": "59118fb6e4b0168ec4b56692",
"modifiedDate": 1494323126886,
"requestedIds": null,
"mergedIds": [],
"properties": {
"name": [
{
"value": "Abhimanyu",
"metadata": {}
}
],
"company": [],
"title": [],
"email": [
{
"value": "absinghrathore127@gmail.com",
"metadata": {}
}
]
},
"state": "ACTIVE"
},
{
"id": "590d5813e4b03a8336fa1642",
"modifiedDate": 1494046739619,
"requestedIds": null,
"mergedIds": [],
"properties": {
"name": [
{
"value": "Tim Archer",
"metadata": {}
}
],
"company": [],
"title": [],
"email": [
{
"value": "tim@avocado.com",
"metadata": {}
}
]
},
"state": "ACTIVE"
}
],
"size": 2
}
我可以通过以下代码从json获取对象:
String s = res.getBody();
Map<String,Object> jsonMap = (Map<String, Object>)JSON.deserializeUntyped(s);
String jsonSubset = JSON.serialize(jsonMap.get('objects'));
我需要的是一些变量中名称和电子邮件的价值。 请帮帮我!!
答案 0 :(得分:0)
这将是一项繁琐的工作,但是一旦您将所有数据分类到适当的Wrapper
课程中,它就会非常简单易用。
首先要定义你的MainWrapper
课程。这将包含其自身的所有级别。如果它有任何对象作为密钥对,那么我们需要确保将其包含为List<>
。这就是你的MainWrapper
应该是这样的:
public class MainWrapper {
Integer offset; // Singleton variable
Integer limits; // Singleton variable
List<ObjectsWrapper> objects; // Collection variable since it starts with [],
Integer size; // Singleton variable
}
由于您在JSON中有objects
数组,因此我将其作为List
MainWrapper
包含在ObjectsWrapper
中。现在是时候定义public class ObjectsWrapper {
String id;
String modifieddate;
String requestedIds;
PropertyWrapper properties;
}
了。下面是相同的包装器。
properties
由于objects
只与properties
关联,因此它是非收集类型的原因。以下是public class PropertyWrapper {
List<NameWrapper> name;
List<String> company;
List<String> title;
List<EmailWrapper> email;
String state;
}
public class NameWrapper {
String name;
String metadata;
}
的表示。
MainWrapper
我想你现在对如何将JSON数据组织到各种包装类中有了一个很好的想法。完成此操作后,只需将JSON反序列化为MainWrapper mainJSONWrapper = (MainWrapper) JSON.deserialize(JSON,MainWrapper.class);
List<ObjectsWrapper> objectsLst = mainJSONWrapper.objects;
for(ObjectsWrapper obj:objectsLst) {
List<NameWrapper> lstNameWrapper = obj.properties;
for(NameWrapper nameObj:NameWrapper) {
System.debug('Name:'+nameObj.name);
System.debug('metadata:'+nameObj.metadata);
}
}
类并进行访问即可。
例如:
ProtectedData
上面的代码没有经过测试,但是,它会让你知道如何以适当的方式反序列化JSON。
也请仔细阅读此答案。How to deserialize a JSON String to Apex