有没有办法仅将JSON字符串中的一个字段?我的代码如下:
Object obj = parser.parse(resp);
System.out.println(obj);
JSONArray array = new JSONArray();
array.add(obj);
JSONObject obj2 = (JSONObject)array.get(0); //Getting NPE here
//Object obj3 = obj2.get("data");
System.out.println("Data: " + obj2.get("data"));
//System.out.println("Email: " + obj3.get("email_address"));
Run Code Online (Sandbox Code Playgroud)
我正在使用以下库
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
Run Code Online (Sandbox Code Playgroud)
从响应字符串分别来看,我只需要data.email_address。我找不到解决办法。
因此,如果这是您的输入:
{
"data": {
"email_address": "example@example.com"
}
}
Run Code Online (Sandbox Code Playgroud)
您首先需要将其设置为JSONObject:
JSONObject object = (JSONObject) new JSONParser().parse(json);
Run Code Online (Sandbox Code Playgroud)
然后您可以得到data另一个JSONObject:
JSONObject data = (JSONObject) object.get("data")
Run Code Online (Sandbox Code Playgroud)
从您的data对象中可以获得email_address:
String email = data.get("email_address").toString();
Run Code Online (Sandbox Code Playgroud)
如果您输入的是用户数组,例如:
{
"users": [
{
"data": {
"email_address": "example@example.com"
}
},
{
"data": {
"email_address": "exapmle2@example2.com"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式获得它:
JSONObject object = (JSONObject) new JSONParser().parse(json);
JSONArray users = (JSONArray) object.get("users");
JSONObject user0 = (JSONObject) users.get(0);
JSONObject user0data = (JSONObject) user0.get("data");
String email = user0data.get("email_address").toString();
Run Code Online (Sandbox Code Playgroud)
首先将整个JSON解析为一个Object。然后users从该数组中获取一个名为的数组,从索引中获取0。从该Object中,获取data,然后email_address
| 归档时间: |
|
| 查看次数: |
9575 次 |
| 最近记录: |