0

このjsonに問題があります。

{"directory": {
         "employees": {"employee": [
             {
                 "field": [
                     {
                         "content": "Charlotte Abbott",
                         "id": "displayName"
                     },
                     {
                         "content": "Charlotte",
                         "id": "firstName"
                     },

このようなクラスにキャストしています

@SerializedName("directory")
    public Directory directory;

    public class Directory
    {
        @SerializedName("employees")
        public Employees employees;
    }
    public class Employees
    {
        @SerializedName("employee")
        public List<Employee> employee;
    }

    public class Employee
    {
        @SerializedName("field")
        public List<Fields> fields;

        @SerializedName("id")
        public String employeeId;
    }
    public class Fields
    {
        @SerializedName("content")
        public String content;

        @SerializedName("id")
        public String label;
    }

また、シリアル化時にデータを挿入するためのすべての変数に到達しているわけではありません。代わりに、すべてnullを取得しています。ただし、適切な量(数)のDirectoryオブジェクトを取得しているので、そこまで到達していることがわかります。誰かが私がここで間違っていることについていくつかの洞察を持っていますか?jsonはその通りであり、私はそれを設計しませんでしたが、それはそれがどのように使用されるかです。

4

2 に答える 2

2

非常に奇妙なデータ構造を使用する必要がありますが、ここにあります。

public class App {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String jsonString = "{\"directory\": {\"employees\": {\"employee\": [{\"field\": [{\"content\": \"Charlotte Abbott\",\"id\": \"displayName\"},{\"content\": \"Charlotte\",\"id\": \"firstName\"}]}]}}}";

        Wrapper obj = (Wrapper) gson.fromJson(jsonString, Wrapper.class);

        System.out.println(obj.getDirectory().getEmployees().getEmployeeList()
                .get(0).getFieldList().get(0).getContent());
    }
}

Wrapperラップアラウンドするクラスが必要ですDirectory

public class Wrapper {
    private Directory directory;

    public Directory getDirectory() {
        return directory;
    }

    public void setDirectory(Directory directory) {
        this.directory = directory;
    }
}

Directoryクラス。

public class Directory {
    @SerializedName("employees")
    private Employees employees;

    public Employees getEmployees() {
        return employees;
    }

    public void setEmployees(Employees employees) {
        this.employees = employees;
    }
}

Employeesクラス:

public class Employees {
    @SerializedName("employee")
    private List<Employee> employeeList;

    public List<Employee> getEmployeeList() {
        return employeeList;
    }

    public void setEmployeeList(List<Employee> employeeList) {
        this.employeeList = employeeList;
    }
}

Employeeクラス:

public class Employee {
    @SerializedName("field")
    private List<Field> fieldList;

    public List<Field> getFieldList() {
        return fieldList;
    }

    public void setFieldList(List<Field> fieldList) {
        this.fieldList = fieldList;
    }
}

Fieldクラス:

public class Field {
    @SerializedName("content")
    private String content;
    @SerializedName("id")
    private String id;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

ここでGSONの例を使用してJSONからJavaオブジェクトを参照してください:http://java.sg/parsing-a-json-string-into-an-object-with-gson-easily/

于 2012-11-06T01:47:57.187 に答える
0

それで、これがどのように機能したかです、私はそれを正しくしました、私はちょうどそれが入れられた後にデータを正しく検証していなかった、そしてそれで私はそれを割り当てて後でアクセスするためにそれを保存することができずにそれを失っていました。

醜いですが地図はこんな感じ

DIRECTORY obj
{
    EMPLOYEES obj
    {
        List employee []
        {
            int id
            List fields[]
            {
                content
                id
            {     
        {    
    { 
{   
于 2012-11-06T01:44:13.007 に答える