簡體   English   中英

將JSON字符串轉換為內部包含對象列表的對象-Java

[英]Converting a JSON string into an object with a list of objects inside it - Java

我需要以下Java格式反序列化JSON的幫助:

data.json

{
   "tokens":[
      {
         "position":1,
         "text":"hello",
         "suggestions":[
            {
               "suggestion":"hi",
               "points":0.534
            },
            {
               "suggestion":"howdy",
               "points":0.734
            }
         ]
      },
   ]
}

我已經創建了兩個類,一個類稱為Token,另一個類稱為uggestination,其屬性與JSON格式匹配。

令牌.java

public class Token {
    private int position;
    private String text;
    private List<Suggestion> suggestions;

    public Token(int position, String text, List<Suggestion> suggestions) {
        this.position = position;
        this.text = text;
        this.suggestions = suggestions;
    }
}

Recommendation.java

public class Suggestion {
    private String suggestion;
    private double points;

    public Suggestion(String suggestion, double points) {
        this.suggestion = suggestion;
        this.points = points;
    }

}

如何將JSON“解包”到Token列表中,每個Token都有兩個必需的字符串和一個Recommendation對象列表作為其屬性? (理想情況下,它將使用Gson庫)

我已經嘗試過了,但是沒有用:

Gson gson = new Gson();
Type listType = new TypeToken<List<Token>>(){}.getType();

List<Token> tokenList = gson.fromJson(jsonString, listType);

System.out.println(tokenList.get(0));

謝謝

您可以使用Jackson的TypeReference實現此目的,例如:

ObjectMapper objectMapper = new ObjectMapper();
TypeReference<List<Token>> typeReference = new TypeReference<List<Token>>() {};
List<Token> tokens = objectMapper.readValue("<json_stribg>", typeReference);

您可以在此處閱讀有關TypeReference更多信息。

您必須創建另一個類, Output

import java.util.List;

public class Output {
    public List<Token> getTokens() {
        return tokens;
    }

    public void setTokens(List<Token> tokens) {
        this.tokens = tokens;
    }

    private List<Token> tokens;
}

然后使用

Output output = new Gson().fromJson(json, Output.class);

然后您可以使用輸出獲取tokens列表並進一步suggestion

如果您使用Jackson,則應在上方字段中使用@JsonProperty。 嘗試按以下方式編寫文件:

公共類令牌{

@JsonProperty
private int position;

@JsonProperty
private String text;

@JsonProperty
private List<Suggestion> suggestions;

//getters/setters

}

公共課程建議{

@JsonProperty
private String suggestion;

@JsonProperty
private double points;

// getters/setters

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM