You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.4 KiB
148 lines
4.4 KiB
package com.jayway.jsonpath; |
|
|
|
import org.codehaus.jackson.map.ObjectMapper; |
|
import org.codehaus.jackson.type.TypeReference; |
|
import org.junit.Test; |
|
|
|
import java.util.Collection; |
|
import java.util.List; |
|
import java.util.Set; |
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
/** |
|
* Created by IntelliJ IDEA. |
|
* User: kallestenflo |
|
* Date: 3/2/12 |
|
* Time: 10:50 AM |
|
*/ |
|
public class JsonModelMapperTest { |
|
|
|
public final static String DOCUMENT = |
|
"{ \"store\": {\n" + |
|
" \"book\": [ \n" + |
|
" { \"category\": \"reference\",\n" + |
|
" \"author\": \"Nigel Rees\",\n" + |
|
" \"title\": \"Sayings of the Century\",\n" + |
|
" \"displayPrice\": 8.95\n" + |
|
" },\n" + |
|
" { \"category\": \"fiction\",\n" + |
|
" \"author\": \"Evelyn Waugh\",\n" + |
|
" \"title\": \"Sword of Honour\",\n" + |
|
" \"displayPrice\": 12.99\n" + |
|
" },\n" + |
|
" { \"category\": \"fiction\",\n" + |
|
" \"author\": \"Herman Melville\",\n" + |
|
" \"title\": \"Moby Dick\",\n" + |
|
" \"isbn\": \"0-553-21311-3\",\n" + |
|
" \"displayPrice\": 8.99\n" + |
|
" },\n" + |
|
" { \"category\": \"fiction\",\n" + |
|
" \"author\": \"J. R. R. Tolkien\",\n" + |
|
" \"title\": \"The Lord of the Rings\",\n" + |
|
" \"isbn\": \"0-395-19395-8\",\n" + |
|
" \"displayPrice\": 22.99\n" + |
|
" }\n" + |
|
" ],\n" + |
|
" \"bicycle\": {\n" + |
|
" \"color\": \"red\",\n" + |
|
" \"displayPrice\": 19.95,\n" + |
|
" \"foo:bar\": \"fooBar\",\n" + |
|
" \"dot.notation\": \"new\",\n" + |
|
" \"dash-notation\": \"dashes\"\n" + |
|
" }\n" + |
|
" }\n" + |
|
"}"; |
|
|
|
|
|
@Test |
|
public void map_a_json_model() throws Exception { |
|
|
|
JsonModel model = JsonModel.create(DOCUMENT); |
|
|
|
List<Book> booksList = model.map("$.store.book[0,1]").toListOf(Book.class); |
|
|
|
Set<Book> bookSet = model.map("$.store.book[0,1]").toSetOf(Book.class); |
|
|
|
Book book = model.map("$.store.book[1]").to(Book.class); |
|
|
|
System.out.println("test"); |
|
|
|
} |
|
|
|
@Test |
|
public void a_book_can_be_mapped() throws Exception { |
|
|
|
|
|
//JsonPath.convert(DOCUMENT, "$.store.book[0,1]", List.class).to() |
|
|
|
//List books = JsonPath.read(DOCUMENT, "$.store.book[0,1]", List.class); |
|
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
|
|
|
/* |
|
|
|
|
|
//Standard |
|
List<Map> res = JsonPath.read(DOCUMENT, "$.store.book[0,1]"); |
|
//or |
|
List<Map> res = JsonPath.read(DOCUMENT, "$.store.book[0,1]", List.class); |
|
|
|
|
|
//POJO Mapping med jackson ObjectMapper |
|
List<Book> res = JsonPath.asList().of(Book.class).read(DOCUMENT, "$.store.book[0,1]"); |
|
|
|
List<Book> res = JsonPath.asListOf(Book.class).read(DOCUMENT, "$.store.book[0,1]"); |
|
|
|
Book res = JsonPath.as(Book.class).read(DOCUMENT, "$.store.book[0]"); |
|
|
|
*/ |
|
} |
|
|
|
public static class Book { |
|
private String category; |
|
private String author; |
|
private String title; |
|
private Double displayPrice; |
|
|
|
public Book() { |
|
} |
|
|
|
public String getCategory() { |
|
return category; |
|
} |
|
|
|
public void setCategory(String category) { |
|
this.category = category; |
|
} |
|
|
|
public String getAuthor() { |
|
return author; |
|
} |
|
|
|
public void setAuthor(String author) { |
|
this.author = author; |
|
} |
|
|
|
public String getTitle() { |
|
return title; |
|
} |
|
|
|
public void setTitle(String title) { |
|
this.title = title; |
|
} |
|
|
|
public Double getDisplayPrice() { |
|
return displayPrice; |
|
} |
|
|
|
public void setDisplayPrice(Double displayPrice) { |
|
this.displayPrice = displayPrice; |
|
} |
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|