簡體   English   中英

Jackson JSON 解析返回 null

[英]Jackson JSON parsing returns null

我正在學習如何解析 json 文件以進行 API 測試。 但是,當我使用 jackson 進行解析時,它返回 null 值,其中實際值不是 Z0ECD11C1D7A287A2F0BDZ1 中的 null。 我的 JSON 是:

    {
  "id": 100,
  "FName": "Rayan",
  "LName": "Philip",
  "Role": "Manager"
}

DataBinding class 是 class 具有解析 JSON 文件的代碼。該文件位於 Project/src/test/java 中。

數據綁定 class 是:

import Models.Employee;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.testng.annotations.Test;


import java.io.File;
import java.io.IOException;

public class TestDataBinding {
    @Test
    public void TestDataBinding() throws IOException {
        ObjectMapper map = new ObjectMapper();
       map.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        Employee emp = map.readValue(new File("src/main/resources/Data/Employees.json"), Employee.class);
        System.out.println(emp.getFName());
        System.out.println(emp.getLName());


    }
}

員工 class 具有關鍵變量聲明以及 getter 和 setter 方法。

員工 Class 是:

package Models;

public class Employee {
    private int id;
    private String FName;
    private String LName;
    private String Role;
    public int getId() {
        return id;
    }

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

    public String getFName() {
        return FName;
    }

    public void setFName(String FName) {
        this.FName = FName;
    }

    public String getLName() {
        return LName;
    }

    public void setLName(String LName) {
        this.LName = LName;
    }

    public String getRole() {
        return Role;
    }

    public void setRole(String role) {
        Role = role;
    }


}

Output 是:

null
null

===============================================
Default Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

請建議一種正確解析它的方法。

將此添加到您的 Employee.class。 以大寫字母開頭的不是 Java 命名約定(變量應以小寫字母開頭)。 它將尋找fName ,因此我們需要明確定義FName

import com.fasterxml.jackson.annotation.JsonProperty;

// some code

    @JsonProperty("FName")
    private String FName;


    @JsonProperty("LName")
    private String LName;

    @JsonProperty("Role")
    private String Role;

// some code

如果要按 jackson 解析,則應該沒有 Args 結構。

package Models;

public class Employee {
    private int id;
    private String FName;
    private String LName;
    private String Role;

    public Employee(){ } // Look at this!!

    public int getId() {
        return id;
    }

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

    public String getFName() {
        return FName;
    }

    public void setFName(String FName) {
        this.FName = FName;
    }

    public String getLName() {
        return LName;
    }

    public void setLName(String LName) {
        this.LName = LName;
    }

    public String getRole() {
        return Role;
    }

    public void setRole(String role) {
        Role = role;
    }


}

暫無
暫無

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

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