簡體   English   中英

傑森·傑克遜(Json Jackson):無法解析json文件

[英]Json jackson : can't parse a json a file

我正在嘗試解析JSON文件並將其存儲在列表中。 我收到此錯誤:com.fasterxml.jackson.databind.JsonMappingException:無法從START_OBJECT令牌中反序列化java.util.ArrayList實例

這是我的JSON文件

{  "budgetList":[
    {
        "label":"Salary Tim",
        "category":"Monthly Income",  
        "real":1590,  
        "estimated":1590,  
        "date":"",  
        "month":"",  
        "year":"",  
        "type":"Income" 
    },  
    {
        "label":"Salary Tom",  
        "category":"Monthly Income",  
        "real":1540,  
        "estimated":1540,  
        "date":"",  
        "month":"",  
        "year":"",  
        "type":"Income"
    } 
 ]  
}

這是我的代碼
預算 :

public class Budget {
  private String label;
  private String category;
  private int real;
  private int estimated;
  private Date date;
  private int year;
  private String type;
  ....
  ....

}

我的服務:

List<Budget> budgets = objectMapper.readValue(new File("src/main/resources/json/new_exercise.json"), TypeFactory.defaultInstance().constructCollectionType(List.class,
                        Budget.class));

我哪里錯了?

提前致謝。

找到答案

代碼是

ObjectMapper objectMapper = new ObjectMapper();
List<Budget> budgets = null; 
JsonNode node = objectMapper.readTree(new File("src/main/resources/json/new_exercise.json"));
            node = node.get("budgetList");
TypeReference<List<Budget>> typeRef = new TypeReference<List<Budget>>(){};
budgets = objectMapper.readValue(node.traverse(), typeRef);

可以使用GSON庫嗎? 很簡單

Reader reader = new InputStreamReader(new FileInputStream(“ / opt / file.json”));
Gson gson = gsonBuilder.create();
列出listBudget = gson.fromJson(閱讀器,新的TypeToken>(){} .getType());

我認為唯一的問題是Date和整數解析器when為空。 但是您可以注冊適配器,例如:

  GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); public Date deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException { try { return df.parse(json.getAsString()); } catch (ParseException e) { return null; } } }); 

Reader reader = new InputStreamReader(new FileInputStream(“ / opt / file.json”)); Gson gson = gsonBuilder.create();
列出listBudget = gson.fromJson(閱讀器,新的TypeToken>(){} .getType());

它對您有用嗎?,別忘了驗證您的json。

暫無
暫無

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

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