[英]How can I get a subfield from value in json?
lets say I have 可以说我有
{
"name": "Json",
"detail": {
"first_name": "Json",
"last_name": "Scott",
"age": "23"
},
"status": "success"
}
I want to get the name "Json" by the status if it is "success" if it is "terminal" or "running" I don't want to get the name. 我想通过状态获取名称“ Json”,如果是“终端”或“正在运行”则为“成功”,我不想获取名称。 how is this achievable ?
这是如何实现的?
Convert your JSON to a JSONObject, then you can get each value by its name: 将您的JSON转换为JSONObject,然后可以通过其名称获取每个值:
JSONObject obj = new JSONObject(yourJsonAsString);
String result = yourJsonObject.getString("name");
You can get the status object first in the same way, and check it's result and then get/don't get the name accordingly. 您可以首先以相同的方式获取状态对象,并检查其结果,然后相应地获取/不获取名称。
One of the ways to do it: 方法之一:
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JsonParser1 {
static String js1 = "{\n"
+ " \"name\": \"Json\",\n"
+ " \"detail\": {\n"
+ " \"first_name\": \"Json\",\n"
+ " \"last_name\": \"Scott\",\n"
+ " \"age\": \"23\"\n"
+ " },\n"
+ " \"status\": \"success\"\n"
+ "}";
public JsonParser1() {
parserJSON();
}
public void parserJSON() {
JSONParser parser = new JSONParser();
try {
Object obj1 = parser.parse(js1);
System.out.println("User 1: " + obj1.toString());
System.out.println();
JSONObject jobj1 = (JSONObject) obj1;
String name = jobj1.get("name").toString();
String status = jobj1.get("status").toString();
if (name.equals("Json")) {
System.out.println("Name: " + name + "\t" + "Status: " + status);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new JsonParser1();
}
}
OUTPUT: OUTPUT:
User 1: {"name":"Json","detail":{"last_name":"Scott","first_name":"Json","age":"23"},"status":"success"}
Name: Json Status: success
Try This 尝试这个
Create Class Files To Get Objects From JSON. 创建类文件以从JSON获取对象。 (As Given Below)
(如下所示)
class ResponseObject implements Serializable { String name; Detail detail; String status; public ResponseObject() { this("", new Detail("", "", ""), ""); } public ResponseObject(String name, Detail detail, String status) { this.name = name; this.detail = detail; this.status = status; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Detail getDetail() { return detail; } public void setDetail(Detail detail) { this.detail = detail; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } } class Detail implements Serializable { String first_name; String last_name; String age; public Detail() { this("", "", ""); } public Detail(String first_name, String last_name, String age) { this.first_name = first_name; this.last_name = last_name; this.age = age; } public String getFirst_name() { return first_name; } public void setFirst_name(String first_name) { this.first_name = first_name; } public String getLast_name() { return last_name; } public void setLast_name(String last_name) { this.last_name = last_name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
Parse JSON String and get objects using googles GSON As shown Below. 解析JSON字符串并使用Google GSON获取对象,如下所示。
String strResponse = "{ \\"name\\": \\"Json\\", \\"detail\\": { \\"first_name\\": \\"Json\\", \\"last_name\\": \\"Scott\\", \\"age\\": \\"23\\" }, \\"status\\": \\"success\\" }"; try { ResponseObject responseObject = new Gson().fromJson(strResponse, ResponseObject.class); if (responseObject.getStatus().equalsIgnoreCase("success")) { System.out.println(responseObject.getName()); System.out.println(responseObject.getDetail().getFirst_name()); } else { //status terminal } } catch (JsonSyntaxException e) { e.printStackTrace(); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.