2017-06-17 11 views
0

は、「ターミナル」または私は名前を取得する必要はありません「実行中」であれば、それは「成功」である場合、私は状況によって名称「JSON」を取得したい私はjsonの値からサブフィールドを取得するにはどうすればよいですか?

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

を持って言うことができます。これはどのように達成可能ですか?

+0

? – Abhishek

+0

「名前」フィールドから、first_nameから取得する方法も教えてください。私はそれが非常に似た方法でなければならないと思う – flux

+0

私は私の答えがそれを確認した、私はそれが役立つと思う。 – Abhishek

答えて

0

、あなたがその名前でそれぞれの値を取得することができ、JSONObjectにあなたのJSONに変換:

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

あなたは同じように最初のステータスオブジェクトを取得し、それが結果として、その後/ドン」入手ます確認することができますそれに応じて名前を得る。

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

JSONからオブジェクトを取得するために、クラスファイルを作成します。この

  1. を試してみてください。

    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文字列(としては、下記の)と下記のようにグーグルGSONを使用してオブジェクトを取得します。名前またはFIRST_NAMEから "JSON" を取得したいフィールドから

    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(); 
    } 
    
関連する問題