2017-06-17 12 views
0

可以說我有如何從json中獲得一個子域?

{ 
    "name": "Json", 
    "detail": { 
     "first_name": "Json", 
     "last_name": "Scott", 
     "age": "23" 
    }, 
    "status": "success" 
} 

我想要的狀態,以獲得名字「類JSON」,如果它是「成功」,如果是「終端」或「跑步」我不希望得到的名字。這是如何實現的?

+0

? – Abhishek

+0

from「name」字段,你能告訴我如何從first_name中獲得它嗎?我認爲它應該是一個非常相似的方式 – flux

+0

我給我的答案檢查它,我認爲它有幫助。 – Abhishek

回答

0

將您的JSON到JSONObject的,那麼你可以得到它的名字每個值:

JSONObject obj = new JSONObject(yourJsonAsString); 
String result = yourJsonObject.getString("name"); 

你可以先拿到狀態對象以相同的方式,並檢查它的結果,然後獲取/唐」 t相應地得到名稱。

0

一個做到這一點的方法:

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:

User 1: {"name":"Json","detail":{"last_name":"Scott","first_name":"Json","age":"23"},"status":"success"} 

Name: Json Status: success 
+0

了不起的東西,謝謝。這有助於很多,並清除了我遇到的一個基本概念 – flux

0

嘗試這個

  1. 創建的類文件獲取對象從JSON。 (如下所示)

    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; 
    } 
    } 
    
  2. 解析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(); 
    } 
    
從哪個字段要從名稱或FIRST_NAME得到 「Json的」