2016-08-15 16 views
0

JSON URLから値を読み取ろうとしていますが、Array内のListから値を読み取る方法がわかりません。以下に、私のPOJO、Main、およびJSONコードがあります。あなたの助けのためにどうもありがとうございますJava; JSON;ジャクソン; JSONから配列内のリストから値を取得する

POJO:

package org.jcexchange.FBApp; 
import java.util.List; 
import org.jcexchange.FBApp.Details; 


public class Users { 
    private List<Details> Values; 

    public List<Details> getValues() { 
     return this.Values; 
    } 
    public void setValues(List<Details> Values) { 
     this.Values = Values; 
    } 
} 

public class Details { 
    private String user_name; 
    private String user_password; 
    private int age; 
    private String user_email; 

    public String getUserName() { 
     return this.user_name; 
    } 
    public void setUserName(String user_name) { 
     this.user_name = user_name; 
    } 

    public String getUserPassword() { 
     return this.user_password; 
    } 
    public void setUserPassword(String user_password) { 
     this.user_password = user_password; 
    } 

    public int getAge() { 
     return this.age; 
    } 
    public void setAge(int age) { 
     this.age = age; 
    } 

    public String getUserEmail() { 
     return this.user_email; 
    } 
    public void setUserEmail(String user_email) { 
     this.user_email = user_email; 
    } 
} 

メイン:私はしかし、私は把握しようとこだわっている、WebサービスからJSONを引くことができるよ

public class Main { 
    public static void main(String[] args) { 
     try { 
      URL jsonURL = new URL("https://jchtest.herokuapp.com/index.php?    
      PW=2"); 
      ObjectMapper mapper = new ObjectMapper(); 




     mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 
     false); 
     Users[] a1 = mapper.readValue(jsonURL, Users[].class); 
     } 
     catch (Exception e) { 
      throw new RuntimeException(e); 
     }  
    } 
} 

JSON配列の最初の「値」インデックスからuser_nameなどを取得する方法

JSON:

[ 
    { 
    "Values": { 
     "user_name": "jhart", 
     "user_password": "gooddeval1", 
     "age": 28, 
     "user_email": "heheh" 
    } 
    }, 
    { 
    "Values": { 
     "user_name": "bdole", 
     "user_password": "Passwordd", 
     "age": 82, 
     "user_email": "hahah" 
    } 
    } 
] 

答えて

0

私は完全な文脈を持っていないので、ちょっと混乱しているかもしれません。デシリアライザからは、ユーザーの配列が期待され、各ユーザー内に「値」のリストがありますが、JSONではValueがUsersの特異なプロパティであることがわかります。とにかく、ここで私が作った前提に基づいて動作するサンプルです。これは、コレクションと特異特性

import org.codehaus.jackson.annotate.JsonProperty; 

public class Users { 

    @JsonProperty("Values") 
    private Details Values; 

    public Details getValues() { 
     return this.Values; 
    } 

    public void setValues(Details Values) { 
     this.Values = Values; 
    } 
} 



import org.codehaus.jackson.annotate.JsonProperty; 

public class Details { 
@JsonProperty("user_name") 
private String user_name; 
@JsonProperty("user_password") 
private String user_password; 
@JsonProperty("age") 
private int age; 
@JsonProperty("user_email") 
private String user_email; 

public String getUserName() { 
    return this.user_name; 
} 

public void setUserName(String user_name) { 
    this.user_name = user_name; 
} 

public String getUserPassword() { 
    return this.user_password; 
} 

public void setUserPassword(String user_password) { 
    this.user_password = user_password; 
} 

public int getAge() { 
    return this.age; 
} 

public void setAge(int age) { 
    this.age = age; 
} 

public String getUserEmail() { 
    return this.user_email; 
} 

public void setUserEmail(String user_email) { 
    this.user_email = user_email; 
} 

}

インポートのjava.net.URLを変更するために周りにいじっすることができます。

import org.codehaus.jackson.map.ObjectMapper; 

public class Main { 
    public static void main(String[] args) { 
     try { 
      URL jsonURL = new URL("https://jchtest.herokuapp.com/index.php?PW=2"); 
      ObjectMapper mapper = new ObjectMapper(); 
      Users[] a1 = mapper.readValue(jsonURL, Users[].class); 
      System.out.println(a1[0].getValues().getUserName()); 

     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 

これは私のために「jhart」を印刷します。

注:試してみることのできるものは、配列に/オブジェクトを設定してJSONとして書くことができる特異プロパティです。そうすれば、Jackson Deserializerが期待していることと実際に提供していることとの違いを知ることができます。

+0

ご協力いただきありがとうございます。心から感謝する –

関連する問題