我想阅读收到的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,但我不知道该怎么做。
答案 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有一个带有输入流的重载版本,而且是上面使用的那个。