JSON在Java中对象

时间:2015-06-02 04:09:07

标签: java json moxy

我有以下JSON:

{
       "book":{
             "isbn" : "12356789",
             "title" : "Algorithm",
             "author" : [
                           "Cormen",
                           "Rivest",
                           "Stein"
             ],
             "price" : 45.78
       }
}

我需要将此JSON字符串转换为Book类。我不想按属性设置它。另外,我不想使用Gson。

我想做点什么:

Book book=jsonReader.readObject().toClass(Book.class);

如何使用javax.json.JsonMoxy执行此操作?

3 个答案:

答案 0 :(得分:1)

我建议不要使用除Jackson以外的任何东西来处理json。

基于杰克逊的JSON解决方案,您已粘贴的JSON类似于: -

首先为图书对象创建一个POJO

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Books {

    private final BookVO book;

    @JsonCreator
    public Books(@JsonProperty("book") final BookVO book) {
        super();
        this.book = book;
    }

    public BookVO getBook() {
        return book;
    }
}

然后您需要一个Book容器POJO

public static void main(final String[] args) throws JsonParseException, JsonMappingException, IOException {
    final ObjectMapper mapper = new ObjectMapper();
    final Books books = mapper.readValue(new File("book.json"), Books.class);

    System.out.println(books);

}

最后,您需要将JSON转换为Java Objects,如下所示: -

{
       "book":{
             "isbn" : "12356789",
             "title" : "Algorithm",
             "author" : [
                           "Cormen",
                           "Rivest",
                           "Stein"
             ],
             "price" : 45.78
       }
}

book.json的内容是

def sign(x) when x  < 0, do: -1
def sign(x) when x == 0, do:  0
def sign(x) when x  > 0, do:  1

答案 1 :(得分:0)

我使用Jackson解析器来做到这一点。看一下ObjectMapper类。

public static <T> Object getObjectFromJsonString(String json,
        Class<T> className) throws JsonParseException,
        JsonMappingException, IOException {
    InputStream is = new ByteArrayInputStream(json.getBytes("UTF-8"));
    return objectMapper.readValue(is, className);
}

答案 2 :(得分:0)

感谢您的回答。 如果我使用杰克逊,我将不得不在我的项目中添加另一个库(我不想做的事情) 我在http://blog.bdoughan.com/2013/07/eclipselink-moxy-and-java-api-for-json.html

找到了我的问题的答案