package com.xiaoleilu.hutool.json;
import java.math.BigDecimal;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.xiaoleilu.hutool.lang.Console;
/**
* JSONObject单元测试
* @author Looly
*
*/
public class JSONObjectTest {
@Test
public void putAllTest(){
JSONObject json1 = JSONUtil.createObj();
json1.put("a", "value1");
json1.put("b", "value2");
json1.put("c", "value3");
JSONObject json2 = JSONUtil.createObj();
json2.put("a", "value21");
json2.put("b", "value22");
//putAll操作会覆盖相同key的值,因此a,b两个key的值改变,c的值不变
json1.putAll(json2);
Assert.assertEquals(json1.get("a"), "value21");
Assert.assertEquals(json1.get("b"), "value22");
Assert.assertEquals(json1.get("c"), "value3");
}
@Test
public void parseTest(){
String jsonStr = "{\"b\":\"value2\",\"c\":\"value3\",\"a\":\"value1\"}";
JSONObject jsonObject = JSONUtil.parseObj(jsonStr);
Assert.assertEquals(jsonObject.get("a"), "value1");
Assert.assertEquals(jsonObject.get("b"), "value2");
Assert.assertEquals(jsonObject.toString(), jsonStr);
}
@Test
public void toBeanTest(){
JSONObject subJson = JSONUtil.createObj().put("value1", "strValue1").put("value2", "234");
JSONObject json = JSONUtil.createObj()
.put("strValue", "strTest")
.put("intValue", 123)
.put("beanValue", subJson)
.put("list", JSONUtil.createArray().put("a").put("b"));
TestBean bean = json.toBean(TestBean.class);
Console.log(bean);
}
/**
* 测试Bean
* @author Looly
*
*/
public static class TestBean{
private String strValue;
private int intValue;
private subBean beanValue;
private List<String> list;
public String getStrValue() {
return strValue;
}
public void setStrValue(String strValue) {
this.strValue = strValue;
}
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public subBean getBeanValue() {
return beanValue;
}
public void setBeanValue(subBean beanValue) {
this.beanValue = beanValue;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
@Override
public String toString() {
return "TestBean [strValue=" + strValue + ", intValue=" + intValue + ", beanValue=" + beanValue + ", list=" + list + "]";
}
}
/**
* 测试子Bean
* @author Looly
*
*/
public static class subBean{
private String value1;
private BigDecimal value2;
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public BigDecimal getValue2() {
return value2;
}
public void setValue2(BigDecimal value2) {
this.value2 = value2;
}
@Override
public String toString() {
return "subBean [value1=" + value1 + ", value2=" + value2 + "]";
}
}
}