使用JACKSON读取JSON文件

时间:2018-05-12 08:33:27

标签: java json parsing

我想阅读收到的JSON文件。

这是JSON文件的形式:

{
    "name": "list_name"
    "items": [
        {
            "id": 4
        },
        {
            "id": 3
        },
        {
            "id": 2
        },
    ]
} 

我想解析代表电影列表的JSON,以及电影的id。我想提取ID和名称。

@PUT
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
public Response deleteMoviesFromList2(@Context HttpServletRequest req) Long movieListId) {
    Long userId = getLoggedUser(req);
    getLoggedUser(req);

    final String json = "some JSON string";
    final ObjectMapper mapper = new ObjectMapper();


    return buildResponse(listMovieService.remove(¿?));
}

我想提取ID,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

您可以像这样使用ObjectMapper类转换json字符串。

ObjectMapper objectMapper = new ObjectMapper();

String carJson =
    "{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";

try {
    Car car = objectMapper.readValue(carJson, Car.class);

    System.out.println("car brand = " + car.getBrand());
    System.out.println("car doors = " + car.getDoors());
} catch (IOException e) {
    e.printStackTrace();
}

在这里,您可以将Car class替换为您的自定义Movie类,您就完成了。

答案 1 :(得分:0)

如果您定义了电影类,例如:

void printCheck(string y, menuItemType list[]) {
  double bill = 0;
  for(int i = 0; i< y.length(); i++)
  {
    string a = y.substr(i, 1);
    int kk = atoi(a.c_str());
    bill += list[kk - 1].menuPrice;

    cout << left << setw(15) << list[kk - 1].menuItem << right << setw(5)
             << "|" << list[kk - 1].menuPrice << endl;
  }
  cout << fixed << setprecision(2);
  cout << left << setw(15) << "Amount Due:" << right << setw(10) << "|" << bill << endl;

和电影列表类:

class Movie {
    String id;
    //getters
    //setters
}

然后你可以使用带有inputStream的对象映射器:

class MovieList {
    String name;
    List<Movie> items;
    //getters
    //setters
}

try(InputStream fileStream = new FileInputStream("movielist.json")) { MovieList list = mapper.readValue(fileStream, MovieList.class); } 的readValue有一个带有输入流的重载版本,而且是上面使用的那个。