我正在尝试从json转换为Java对象。我收到一个json字符串,其中包括一个书籍列表:
[{"author":"Jonathan Khatz",
"id":8,
"name":"Criptography 6",
"publisher":"Chapman",
"year":2010},
{"author":"Hausi Muller",
"id":9,
"name":"SelfAdaptiveSystem",
"publisher":"UVic",
"year":2010}]
我创建了一个名为Books的对象:
package RESTful.client.model;
public class Books {
private int id;
private String name;
private String author;
private int year;
private String publisher;
public Books(){
}
public Books(int id, String name, String author, int year, String publisher){
this.id=id;
this.name=name;
this.author=author;
this.year=year;
this.publisher=publisher;
}
// public Getter & Setter methods
}
另外,我正在使用doGet方法从RESTful webservice中以以下方式检索这些数据:
package RESTful.client.getBooks;
import RESTful.client.model.*;
// imports omitted
/**
* Servlet implementation class GetBooksByYear
*/
@WebServlet("/GetBooksByYear")
public class GetBooksByYear extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public GetBooksByYear() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Client client= Client.create();
//PrintWriter printWriter = response.getWriter();
String year= request.getParameter("year");
System.out.println("Year to search: "+year);
WebResource webResource= client.resource("http://localhost:8080/library/webapi/books/year/"+year);
ClientResponse rs=webResource.accept(
MediaType.APPLICATION_JSON_TYPE,
MediaType.APPLICATION_XML_TYPE).
get(ClientResponse.class);
System.out.println("Get operation response processing...\n");
String jsonBooks=rs.getEntity(String.class);
//kajacx solution:
Gson gson = new Gson();
Books[] booksA = gson.fromJson(jsonBooks, Books[].class);
List<Books> books = Arrays.asList(booksA);
for(Books book : books) {
System.out.println(book.getName()+", "+book.getAuthor()+", "+book.getAuthor()+", "+ book.getYear());
}
}
java.lang.NoClassDefFoundError: com/google/gson/Gson
RESTful.client.getBooks.GetBooksByYear.doGet(GetBooksByYear.java:60)
javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
干杯
我这样做了,因为这是我一直使用GSON的方式:
Gson gson = new Gson();
String data = "[{\"author\":\"Jonathan Khatz\", \"id\":8,"
+ "\"name\":\"Criptography 6\","
+ "\"publisher\":\"Chapman\", \"year\":2010},"
+ "{\"author\":\"Hausi Muller\", \"id\":9,"
+ "\"name\":\"SelfAdaptiveSystem\","
+ "\"publisher\":\"UVic\", \"year\":2010}]";
Book[] books = gson.fromJson(data, Book[].class);
Arrays.asList(books).forEach(System.out::println);
而且效果很好。此外,我将books
重命名为book
,因为该类只表示一本书。
问题内容: 我有以下字符串: 如何使用Google / GSON将其转换为Java POJO? 问题答案: 通过使用http://www.jsonschema2pojo.org/或通过在Studio中添加插件(https://github.com/Hexara/Json2Pojo)生成POJO 现在添加依赖项: 将您的json或字符串转换为POJO
问题内容: 我正在从返回JSON格式数据的服务器请求数据。发出请求时,将HashMap转换为JSON并不难,但另一种方式似乎有些棘手。JSON响应如下所示: 哪种方法最容易访问此数据?我正在使用GSON模块。 问题答案: 干得好:
问题内容: 请建议如何将使用库转换为使用库。 我未成功执行的操作: 问题答案: 您无需使用。您应该使用Gson在JSON字符串和您自己的Java对象之间进行转换。 请参阅《Gson用户指南》: (序列化) (反序列化)
问题内容: 我正在从返回JSON格式数据的服务器请求数据。发出请求时,将HashMap转换为JSON并不困难,但另一种方式似乎有些棘手。JSON响应如下所示: 哪种方法最容易访问此数据?我正在使用GSON模块。 问题答案:
问题内容: 我在JS中有一个JSON对象,我想将其转换为字符串。这是功能吗? 提前致谢, 问题答案: JSON.stringify() 将值转换为JSON,如果指定了replacer函数,则可以选择替换值,如果指定了replacer数组,则可以选择仅包括指定的属性。
我在编写从JSON字符串到对象列表的转换代码时遇到了Kotlin的问题。 类型不匹配。必需:键入!找到:()→单位 那么有没有解决办法让它为科特林工作呢?