json-simple/trunk/src/test/java/org/json/simple/Test.java

Code
Comments
Other
Rev Date Author Line
50 26 Feb 19 nicklas 1 /*
50 26 Feb 19 nicklas 2  * $Id: Test.java,v 1.1 2006/04/15 14:40:06 platform Exp $
50 26 Feb 19 nicklas 3  * Created on 2006-4-15
50 26 Feb 19 nicklas 4  */
50 26 Feb 19 nicklas 5 package org.json.simple;
50 26 Feb 19 nicklas 6
50 26 Feb 19 nicklas 7 import java.io.IOException;
50 26 Feb 19 nicklas 8 import java.io.StringWriter;
50 26 Feb 19 nicklas 9 import java.util.ArrayList;
50 26 Feb 19 nicklas 10 import java.util.HashMap;
50 26 Feb 19 nicklas 11 import java.util.Iterator;
50 26 Feb 19 nicklas 12 import java.util.LinkedHashMap;
50 26 Feb 19 nicklas 13 import java.util.LinkedList;
50 26 Feb 19 nicklas 14 import java.util.List;
50 26 Feb 19 nicklas 15 import java.util.Map;
50 26 Feb 19 nicklas 16
50 26 Feb 19 nicklas 17 import junit.framework.TestCase;
50 26 Feb 19 nicklas 18
50 26 Feb 19 nicklas 19 import org.json.simple.parser.ContainerFactory;
50 26 Feb 19 nicklas 20 import org.json.simple.parser.ContentHandler;
50 26 Feb 19 nicklas 21 import org.json.simple.parser.JSONParser;
50 26 Feb 19 nicklas 22 import org.json.simple.parser.ParseException;
50 26 Feb 19 nicklas 23
50 26 Feb 19 nicklas 24 /**
50 26 Feb 19 nicklas 25  * @author FangYidong<fangyidong@yahoo.com.cn>
50 26 Feb 19 nicklas 26  */
50 26 Feb 19 nicklas 27 public class Test extends TestCase{
50 26 Feb 19 nicklas 28
57 26 Feb 19 nicklas 29   @SuppressWarnings("rawtypes")
50 26 Feb 19 nicklas 30   public void testDecode() throws Exception{
50 26 Feb 19 nicklas 31     System.out.println("=======decode=======");
50 26 Feb 19 nicklas 32     
50 26 Feb 19 nicklas 33     String s="[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
50 26 Feb 19 nicklas 34     Object obj=JSONValue.parse(s);
50 26 Feb 19 nicklas 35     JSONArray array=(JSONArray)obj;
50 26 Feb 19 nicklas 36     System.out.println("======the 2nd element of array======");
50 26 Feb 19 nicklas 37     System.out.println(array.get(1));
50 26 Feb 19 nicklas 38     System.out.println();
50 26 Feb 19 nicklas 39     assertEquals("{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}",array.get(1).toString());
50 26 Feb 19 nicklas 40     
50 26 Feb 19 nicklas 41     JSONObject obj2=(JSONObject)array.get(1);
50 26 Feb 19 nicklas 42     System.out.println("======field \"1\"==========");
50 26 Feb 19 nicklas 43     System.out.println(obj2.get("1"));  
50 26 Feb 19 nicklas 44     assertEquals("{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}",obj2.get("1").toString());
57 26 Feb 19 nicklas 45
50 26 Feb 19 nicklas 46     s="{}";
50 26 Feb 19 nicklas 47     obj=JSONValue.parse(s);
50 26 Feb 19 nicklas 48     assertEquals("{}",obj.toString());
50 26 Feb 19 nicklas 49     
50 26 Feb 19 nicklas 50     s="[5,]";
50 26 Feb 19 nicklas 51     obj=JSONValue.parse(s);
50 26 Feb 19 nicklas 52     assertEquals("[5]",obj.toString());
50 26 Feb 19 nicklas 53     
50 26 Feb 19 nicklas 54     s="[5,,2]";
50 26 Feb 19 nicklas 55     obj=JSONValue.parse(s);
50 26 Feb 19 nicklas 56     assertEquals("[5,2]",obj.toString());
57 26 Feb 19 nicklas 57
50 26 Feb 19 nicklas 58     s="[\"hello\\bworld\\\"abc\\tdef\\\\ghi\\rjkl\\n123\\u4e2d\"]";
50 26 Feb 19 nicklas 59     obj=JSONValue.parse(s);
50 26 Feb 19 nicklas 60     assertEquals("hello\bworld\"abc\tdef\\ghi\rjkl\n123δΈ­",((List)obj).get(0).toString());
50 26 Feb 19 nicklas 61     
50 26 Feb 19 nicklas 62     JSONParser parser = new JSONParser();
50 26 Feb 19 nicklas 63     s="{\"name\":";
50 26 Feb 19 nicklas 64     try{
50 26 Feb 19 nicklas 65       obj = parser.parse(s);
50 26 Feb 19 nicklas 66     }
50 26 Feb 19 nicklas 67     catch(ParseException pe){
50 26 Feb 19 nicklas 68       assertEquals(ParseException.ERROR_UNEXPECTED_TOKEN, pe.getErrorType());
50 26 Feb 19 nicklas 69       assertEquals(8, pe.getPosition());
50 26 Feb 19 nicklas 70     }
50 26 Feb 19 nicklas 71     
50 26 Feb 19 nicklas 72     s="{\"name\":}";
50 26 Feb 19 nicklas 73     try{
50 26 Feb 19 nicklas 74       obj = parser.parse(s);
50 26 Feb 19 nicklas 75     }
50 26 Feb 19 nicklas 76     catch(ParseException pe){
50 26 Feb 19 nicklas 77       assertEquals(ParseException.ERROR_UNEXPECTED_TOKEN, pe.getErrorType());
50 26 Feb 19 nicklas 78       assertEquals(8, pe.getPosition());
50 26 Feb 19 nicklas 79     }
50 26 Feb 19 nicklas 80     
57 26 Feb 19 nicklas 81     System.out.println("fff4");
50 26 Feb 19 nicklas 82     
50 26 Feb 19 nicklas 83     s="{\"name";
50 26 Feb 19 nicklas 84     try{
50 26 Feb 19 nicklas 85       obj = parser.parse(s);
50 26 Feb 19 nicklas 86     }
50 26 Feb 19 nicklas 87     catch(ParseException pe){
50 26 Feb 19 nicklas 88       assertEquals(ParseException.ERROR_UNEXPECTED_TOKEN, pe.getErrorType());
50 26 Feb 19 nicklas 89       assertEquals(6, pe.getPosition());
50 26 Feb 19 nicklas 90     }
50 26 Feb 19 nicklas 91     
50 26 Feb 19 nicklas 92     s = "[[null, 123.45, \"a\\\tb c\"}, true]";
50 26 Feb 19 nicklas 93     try{
50 26 Feb 19 nicklas 94       parser.parse(s);
50 26 Feb 19 nicklas 95     }
50 26 Feb 19 nicklas 96     catch(ParseException pe){
50 26 Feb 19 nicklas 97       assertEquals(24, pe.getPosition());
50 26 Feb 19 nicklas 98       System.out.println("Error at character position: " + pe.getPosition());
50 26 Feb 19 nicklas 99       switch(pe.getErrorType()){
50 26 Feb 19 nicklas 100       case ParseException.ERROR_UNEXPECTED_TOKEN:
50 26 Feb 19 nicklas 101         System.out.println("Unexpected token: " + pe.getUnexpectedObject());
50 26 Feb 19 nicklas 102         break;
50 26 Feb 19 nicklas 103       case ParseException.ERROR_UNEXPECTED_CHAR:
50 26 Feb 19 nicklas 104         System.out.println("Unexpected character: " + pe.getUnexpectedObject());
50 26 Feb 19 nicklas 105         break;
50 26 Feb 19 nicklas 106       case ParseException.ERROR_UNEXPECTED_EXCEPTION:
50 26 Feb 19 nicklas 107         ((Exception)pe.getUnexpectedObject()).printStackTrace();
50 26 Feb 19 nicklas 108         break;
50 26 Feb 19 nicklas 109       }
50 26 Feb 19 nicklas 110     }
50 26 Feb 19 nicklas 111     
50 26 Feb 19 nicklas 112     s = "{\"first\": 123, \"second\": [4, 5, 6], \"third\": 789}";
50 26 Feb 19 nicklas 113     ContainerFactory containerFactory = new ContainerFactory(){
55 26 Feb 19 nicklas 114       @Override
57 26 Feb 19 nicklas 115       public List<Object> creatArrayContainer() {
57 26 Feb 19 nicklas 116         return new LinkedList<>();
50 26 Feb 19 nicklas 117       }
50 26 Feb 19 nicklas 118
55 26 Feb 19 nicklas 119       @Override
57 26 Feb 19 nicklas 120       public Map<String, Object> createObjectContainer() {
57 26 Feb 19 nicklas 121         return new LinkedHashMap<>();
50 26 Feb 19 nicklas 122       }
50 26 Feb 19 nicklas 123       
50 26 Feb 19 nicklas 124     };
50 26 Feb 19 nicklas 125     
50 26 Feb 19 nicklas 126     try{
50 26 Feb 19 nicklas 127       Map json = (Map)parser.parse(s, containerFactory);
50 26 Feb 19 nicklas 128       Iterator iter = json.entrySet().iterator();
50 26 Feb 19 nicklas 129       System.out.println("==iterate result==");
50 26 Feb 19 nicklas 130       while(iter.hasNext()){
50 26 Feb 19 nicklas 131         Map.Entry entry = (Map.Entry)iter.next();
50 26 Feb 19 nicklas 132         System.out.println(entry.getKey() + "=>" + entry.getValue());
50 26 Feb 19 nicklas 133       }
50 26 Feb 19 nicklas 134       
50 26 Feb 19 nicklas 135       System.out.println("==toJSONString()==");      
50 26 Feb 19 nicklas 136       System.out.println(JSONValue.toJSONString(json));
50 26 Feb 19 nicklas 137       assertEquals("{\"first\":123,\"second\":[4,5,6],\"third\":789}", JSONValue.toJSONString(json));
50 26 Feb 19 nicklas 138     }
50 26 Feb 19 nicklas 139     catch(ParseException pe){
50 26 Feb 19 nicklas 140       pe.printStackTrace();
50 26 Feb 19 nicklas 141     }
50 26 Feb 19 nicklas 142     
50 26 Feb 19 nicklas 143     s = "{\"first\": 123, \"second\": [{\"s1\":{\"s11\":\"v11\"}}, 4, 5, 6], \"third\": 789}";
50 26 Feb 19 nicklas 144     ContentHandler myHandler = new ContentHandler() {
50 26 Feb 19 nicklas 145
55 26 Feb 19 nicklas 146       @Override
50 26 Feb 19 nicklas 147       public boolean endArray() throws ParseException {
50 26 Feb 19 nicklas 148         System.out.println("endArray()");
50 26 Feb 19 nicklas 149         return true;
50 26 Feb 19 nicklas 150       }
50 26 Feb 19 nicklas 151
55 26 Feb 19 nicklas 152       @Override
50 26 Feb 19 nicklas 153       public void endJSON() throws ParseException {
50 26 Feb 19 nicklas 154         System.out.println("endJSON()");
50 26 Feb 19 nicklas 155       }
50 26 Feb 19 nicklas 156
55 26 Feb 19 nicklas 157       @Override
50 26 Feb 19 nicklas 158       public boolean endObject() throws ParseException {
50 26 Feb 19 nicklas 159         System.out.println("endObject()");
50 26 Feb 19 nicklas 160         return true;
50 26 Feb 19 nicklas 161       }
50 26 Feb 19 nicklas 162
55 26 Feb 19 nicklas 163       @Override
50 26 Feb 19 nicklas 164       public boolean endObjectEntry() throws ParseException {
50 26 Feb 19 nicklas 165         System.out.println("endObjectEntry()");
50 26 Feb 19 nicklas 166         return true;
50 26 Feb 19 nicklas 167       }
50 26 Feb 19 nicklas 168
55 26 Feb 19 nicklas 169       @Override
50 26 Feb 19 nicklas 170       public boolean primitive(Object value) throws ParseException {
50 26 Feb 19 nicklas 171         System.out.println("primitive(): " + value);
50 26 Feb 19 nicklas 172         return true;
50 26 Feb 19 nicklas 173       }
50 26 Feb 19 nicklas 174
55 26 Feb 19 nicklas 175       @Override
50 26 Feb 19 nicklas 176       public boolean startArray() throws ParseException {
50 26 Feb 19 nicklas 177         System.out.println("startArray()");
50 26 Feb 19 nicklas 178         return true;
50 26 Feb 19 nicklas 179       }
50 26 Feb 19 nicklas 180
55 26 Feb 19 nicklas 181       @Override
50 26 Feb 19 nicklas 182       public void startJSON() throws ParseException {
50 26 Feb 19 nicklas 183         System.out.println("startJSON()");
50 26 Feb 19 nicklas 184       }
50 26 Feb 19 nicklas 185
55 26 Feb 19 nicklas 186       @Override
50 26 Feb 19 nicklas 187       public boolean startObject() throws ParseException {
50 26 Feb 19 nicklas 188         System.out.println("startObject()");
50 26 Feb 19 nicklas 189         return true;
50 26 Feb 19 nicklas 190       }
50 26 Feb 19 nicklas 191
55 26 Feb 19 nicklas 192       @Override
50 26 Feb 19 nicklas 193       public boolean startObjectEntry(String key) throws ParseException {
50 26 Feb 19 nicklas 194         System.out.println("startObjectEntry(), key:" + key);
50 26 Feb 19 nicklas 195         return true;
50 26 Feb 19 nicklas 196       }
50 26 Feb 19 nicklas 197       
50 26 Feb 19 nicklas 198     };
50 26 Feb 19 nicklas 199     try{
50 26 Feb 19 nicklas 200       parser.parse(s, myHandler);
50 26 Feb 19 nicklas 201     }
50 26 Feb 19 nicklas 202     catch(ParseException pe){
50 26 Feb 19 nicklas 203       pe.printStackTrace();
50 26 Feb 19 nicklas 204     }
50 26 Feb 19 nicklas 205         
50 26 Feb 19 nicklas 206         class KeyFinder implements ContentHandler{
50 26 Feb 19 nicklas 207             private Object value;
50 26 Feb 19 nicklas 208             private boolean found = false;
50 26 Feb 19 nicklas 209             private boolean end = false;
50 26 Feb 19 nicklas 210             private String key;
50 26 Feb 19 nicklas 211             private String matchKey;
50 26 Feb 19 nicklas 212             
50 26 Feb 19 nicklas 213             public void setMatchKey(String matchKey){
50 26 Feb 19 nicklas 214                 this.matchKey = matchKey;
50 26 Feb 19 nicklas 215             }
50 26 Feb 19 nicklas 216             
50 26 Feb 19 nicklas 217             public Object getValue(){
50 26 Feb 19 nicklas 218                 return value;
50 26 Feb 19 nicklas 219             }
50 26 Feb 19 nicklas 220             
50 26 Feb 19 nicklas 221             public boolean isEnd(){
50 26 Feb 19 nicklas 222                 return end;
50 26 Feb 19 nicklas 223             }
50 26 Feb 19 nicklas 224             
50 26 Feb 19 nicklas 225             public void setFound(boolean found){
50 26 Feb 19 nicklas 226                 this.found = found;
50 26 Feb 19 nicklas 227             }
50 26 Feb 19 nicklas 228             
50 26 Feb 19 nicklas 229             public boolean isFound(){
50 26 Feb 19 nicklas 230                 return found;
50 26 Feb 19 nicklas 231             }
50 26 Feb 19 nicklas 232             
55 26 Feb 19 nicklas 233             @Override
55 26 Feb 19 nicklas 234       public void startJSON() throws ParseException, IOException {
50 26 Feb 19 nicklas 235                 found = false;
50 26 Feb 19 nicklas 236                 end = false;
50 26 Feb 19 nicklas 237             }
50 26 Feb 19 nicklas 238
55 26 Feb 19 nicklas 239             @Override
55 26 Feb 19 nicklas 240       public void endJSON() throws ParseException, IOException {
50 26 Feb 19 nicklas 241                 end = true;
50 26 Feb 19 nicklas 242             }
50 26 Feb 19 nicklas 243
55 26 Feb 19 nicklas 244             @Override
55 26 Feb 19 nicklas 245       public boolean primitive(Object value) throws ParseException, IOException {
50 26 Feb 19 nicklas 246                 if(key != null){
50 26 Feb 19 nicklas 247                     if(key.equals(matchKey)){
50 26 Feb 19 nicklas 248                         found = true;
50 26 Feb 19 nicklas 249                         this.value = value;
50 26 Feb 19 nicklas 250                         key = null;
50 26 Feb 19 nicklas 251                         return false;
50 26 Feb 19 nicklas 252                     }
50 26 Feb 19 nicklas 253                 }
50 26 Feb 19 nicklas 254                 return true;
50 26 Feb 19 nicklas 255             }
50 26 Feb 19 nicklas 256
55 26 Feb 19 nicklas 257             @Override
55 26 Feb 19 nicklas 258       public boolean startArray() throws ParseException, IOException {
50 26 Feb 19 nicklas 259                 return true;
50 26 Feb 19 nicklas 260             }
50 26 Feb 19 nicklas 261
50 26 Feb 19 nicklas 262             
55 26 Feb 19 nicklas 263             @Override
55 26 Feb 19 nicklas 264       public boolean startObject() throws ParseException, IOException {
50 26 Feb 19 nicklas 265                 return true;
50 26 Feb 19 nicklas 266             }
50 26 Feb 19 nicklas 267
55 26 Feb 19 nicklas 268             @Override
55 26 Feb 19 nicklas 269       public boolean startObjectEntry(String key) throws ParseException, IOException {
50 26 Feb 19 nicklas 270                 this.key = key;
50 26 Feb 19 nicklas 271                 return true;
50 26 Feb 19 nicklas 272             }
50 26 Feb 19 nicklas 273             
55 26 Feb 19 nicklas 274             @Override
55 26 Feb 19 nicklas 275       public boolean endArray() throws ParseException, IOException {
50 26 Feb 19 nicklas 276                 return false;
50 26 Feb 19 nicklas 277             }
50 26 Feb 19 nicklas 278
55 26 Feb 19 nicklas 279             @Override
55 26 Feb 19 nicklas 280       public boolean endObject() throws ParseException, IOException {
50 26 Feb 19 nicklas 281                 return true;
50 26 Feb 19 nicklas 282             }
50 26 Feb 19 nicklas 283
55 26 Feb 19 nicklas 284             @Override
55 26 Feb 19 nicklas 285       public boolean endObjectEntry() throws ParseException, IOException {
50 26 Feb 19 nicklas 286                 return true;
50 26 Feb 19 nicklas 287             }
50 26 Feb 19 nicklas 288         };
50 26 Feb 19 nicklas 289         
50 26 Feb 19 nicklas 290         s = "{\"first\": 123, \"second\": [{\"k1\":{\"id\":\"id1\"}}, 4, 5, 6, {\"id\": 123}], \"third\": 789, \"id\": null}";
50 26 Feb 19 nicklas 291         parser.reset();
50 26 Feb 19 nicklas 292         KeyFinder keyFinder = new KeyFinder();
50 26 Feb 19 nicklas 293         keyFinder.setMatchKey("id");
50 26 Feb 19 nicklas 294         int i = 0;
50 26 Feb 19 nicklas 295         try{
50 26 Feb 19 nicklas 296             while(!keyFinder.isEnd()){
50 26 Feb 19 nicklas 297                 parser.parse(s, keyFinder, true);
50 26 Feb 19 nicklas 298                 if(keyFinder.isFound()){
50 26 Feb 19 nicklas 299                     i++;
50 26 Feb 19 nicklas 300                     keyFinder.setFound(false);
50 26 Feb 19 nicklas 301                     System.out.println("found id:");
50 26 Feb 19 nicklas 302                     System.out.println(keyFinder.getValue());
50 26 Feb 19 nicklas 303                     if(i == 1)
50 26 Feb 19 nicklas 304                         assertEquals("id1", keyFinder.getValue());
50 26 Feb 19 nicklas 305                     if(i == 2){
50 26 Feb 19 nicklas 306                         assertTrue(keyFinder.getValue() instanceof Number);
50 26 Feb 19 nicklas 307                         assertEquals("123", String.valueOf(keyFinder.getValue()));
50 26 Feb 19 nicklas 308                     }
50 26 Feb 19 nicklas 309                     if(i == 3)
50 26 Feb 19 nicklas 310                         assertTrue(null == keyFinder.getValue());
50 26 Feb 19 nicklas 311                 }
50 26 Feb 19 nicklas 312             }
50 26 Feb 19 nicklas 313         }
50 26 Feb 19 nicklas 314         catch(ParseException pe){
50 26 Feb 19 nicklas 315             pe.printStackTrace();
50 26 Feb 19 nicklas 316         }
50 26 Feb 19 nicklas 317   }
50 26 Feb 19 nicklas 318   
50 26 Feb 19 nicklas 319   public void testEncode() throws Exception{
50 26 Feb 19 nicklas 320     System.out.println("=======encode=======");
50 26 Feb 19 nicklas 321     
50 26 Feb 19 nicklas 322     JSONArray array1=new JSONArray();
50 26 Feb 19 nicklas 323     array1.add("abc\u0010a/");
50 26 Feb 19 nicklas 324     array1.add(new Integer(123));
50 26 Feb 19 nicklas 325     array1.add(new Double(222.123));
50 26 Feb 19 nicklas 326     array1.add(new Boolean(true));
50 26 Feb 19 nicklas 327     System.out.println("======array1==========");
50 26 Feb 19 nicklas 328     System.out.println(array1);
50 26 Feb 19 nicklas 329     System.out.println();
50 26 Feb 19 nicklas 330     assertEquals("[\"abc\\u0010a\\/\",123,222.123,true]",array1.toString());
50 26 Feb 19 nicklas 331     
50 26 Feb 19 nicklas 332     JSONObject obj1=new JSONObject();
50 26 Feb 19 nicklas 333     obj1.put("name","fang");
50 26 Feb 19 nicklas 334     obj1.put("age",new Integer(27));
50 26 Feb 19 nicklas 335     obj1.put("is_developer",new Boolean(true));
50 26 Feb 19 nicklas 336     obj1.put("weight",new Double(60.21));
50 26 Feb 19 nicklas 337     obj1.put("array1",array1);
50 26 Feb 19 nicklas 338     System.out.println("======obj1 with array1===========");
50 26 Feb 19 nicklas 339     System.out.println(obj1);
50 26 Feb 19 nicklas 340     System.out.println();
57 26 Feb 19 nicklas 341     System.out.println("fff3");
50 26 Feb 19 nicklas 342     assertEquals("{\"array1\":[\"abc\\u0010a\\/\",123,222.123,true],\"weight\":60.21,\"age\":27,\"name\":\"fang\",\"is_developer\":true}",obj1.toString());
57 26 Feb 19 nicklas 343     System.out.println("fff4");
50 26 Feb 19 nicklas 344     
50 26 Feb 19 nicklas 345     obj1.remove("array1");
50 26 Feb 19 nicklas 346     array1.add(obj1);
50 26 Feb 19 nicklas 347     System.out.println("======array1 with obj1========");
50 26 Feb 19 nicklas 348     System.out.println(array1);
50 26 Feb 19 nicklas 349     System.out.println();
50 26 Feb 19 nicklas 350     assertEquals("[\"abc\\u0010a\\/\",123,222.123,true,{\"weight\":60.21,\"age\":27,\"name\":\"fang\",\"is_developer\":true}]",array1.toString());
50 26 Feb 19 nicklas 351   
57 26 Feb 19 nicklas 352     List<Object> list = new ArrayList<>();
50 26 Feb 19 nicklas 353     list.add("abc\u0010a/");
50 26 Feb 19 nicklas 354     list.add(new Integer(123));
50 26 Feb 19 nicklas 355     list.add(new Double(222.123));
50 26 Feb 19 nicklas 356     list.add(new Boolean(true));
50 26 Feb 19 nicklas 357     list.add(null);
50 26 Feb 19 nicklas 358     System.out.println("======list==========");
50 26 Feb 19 nicklas 359     System.out.println(JSONArray.toJSONString(list));
50 26 Feb 19 nicklas 360     System.out.println();
50 26 Feb 19 nicklas 361     assertEquals("[\"abc\\u0010a\\/\",123,222.123,true,null]",JSONArray.toJSONString(list));
50 26 Feb 19 nicklas 362     
57 26 Feb 19 nicklas 363     Map<String, Object> map = new HashMap<>();
50 26 Feb 19 nicklas 364     map.put("name","fang");
50 26 Feb 19 nicklas 365     map.put("age",new Integer(27));
50 26 Feb 19 nicklas 366     map.put("is_developer",new Boolean(true));
50 26 Feb 19 nicklas 367     map.put("weight",new Double(60.21));
50 26 Feb 19 nicklas 368     map.put("array1",list);
50 26 Feb 19 nicklas 369     System.out.println("======map with list===========");
50 26 Feb 19 nicklas 370     System.out.println(map);
50 26 Feb 19 nicklas 371     System.out.println();
50 26 Feb 19 nicklas 372     assertEquals("{\"array1\":[\"abc\\u0010a\\/\",123,222.123,true,null],\"weight\":60.21,\"age\":27,\"name\":\"fang\",\"is_developer\":true}",JSONObject.toJSONString(map));    
50 26 Feb 19 nicklas 373     
57 26 Feb 19 nicklas 374         Map<String, Object> m1 = new LinkedHashMap<>();
57 26 Feb 19 nicklas 375         Map<String, Object> m2 = new HashMap<>();
57 26 Feb 19 nicklas 376         List<Object>  l1 = new LinkedList<>();
50 26 Feb 19 nicklas 377
50 26 Feb 19 nicklas 378         m1.put("k11","v11");
50 26 Feb 19 nicklas 379         m1.put("k12","v12");
50 26 Feb 19 nicklas 380         m1.put("k13", "v13");
50 26 Feb 19 nicklas 381         m2.put("k21","v21");
50 26 Feb 19 nicklas 382         m2.put("k22","v22");
50 26 Feb 19 nicklas 383         m2.put("k23","v23");
50 26 Feb 19 nicklas 384         l1.add(m1);
50 26 Feb 19 nicklas 385         l1.add(m2);
50 26 Feb 19 nicklas 386         String jsonString = JSONValue.toJSONString(l1);
50 26 Feb 19 nicklas 387         System.out.println(jsonString);
50 26 Feb 19 nicklas 388         assertEquals("[{\"k11\":\"v11\",\"k12\":\"v12\",\"k13\":\"v13\"},{\"k22\":\"v22\",\"k21\":\"v21\",\"k23\":\"v23\"}]", jsonString);
50 26 Feb 19 nicklas 389     
50 26 Feb 19 nicklas 390         StringWriter out = new StringWriter();
50 26 Feb 19 nicklas 391         JSONValue.writeJSONString(l1, out);
50 26 Feb 19 nicklas 392         jsonString = out.toString();
50 26 Feb 19 nicklas 393         System.out.println(jsonString);
50 26 Feb 19 nicklas 394         assertEquals("[{\"k11\":\"v11\",\"k12\":\"v12\",\"k13\":\"v13\"},{\"k22\":\"v22\",\"k21\":\"v21\",\"k23\":\"v23\"}]", jsonString);
50 26 Feb 19 nicklas 395         
57 26 Feb 19 nicklas 396         List<Object> l2 = new LinkedList<>();
57 26 Feb 19 nicklas 397         Map<String, Object> m3 = new LinkedHashMap<>();
50 26 Feb 19 nicklas 398         m3.put("k31", "v3");
50 26 Feb 19 nicklas 399         m3.put("k32", new Double(123.45));
50 26 Feb 19 nicklas 400         m3.put("k33", new Boolean(false));
50 26 Feb 19 nicklas 401         m3.put("k34", null);
50 26 Feb 19 nicklas 402         l2.add("vvv");
50 26 Feb 19 nicklas 403         l2.add("1.23456789123456789");
50 26 Feb 19 nicklas 404         l2.add(new Boolean(true));
50 26 Feb 19 nicklas 405         l2.add(null);
50 26 Feb 19 nicklas 406         m3.put("k35", l2);
50 26 Feb 19 nicklas 407         m1.put("k14", m3);
50 26 Feb 19 nicklas 408         out = new StringWriter();
50 26 Feb 19 nicklas 409         JSONValue.writeJSONString(l1, out);
50 26 Feb 19 nicklas 410         jsonString = out.toString();
50 26 Feb 19 nicklas 411         System.out.println(jsonString);
50 26 Feb 19 nicklas 412         assertEquals("[{\"k11\":\"v11\",\"k12\":\"v12\",\"k13\":\"v13\",\"k14\":{\"k31\":\"v3\",\"k32\":123.45,\"k33\":false,\"k34\":null,\"k35\":[\"vvv\",\"1.23456789123456789\",true,null]}},{\"k22\":\"v22\",\"k21\":\"v21\",\"k23\":\"v23\"}]",jsonString);
50 26 Feb 19 nicklas 413     }
50 26 Feb 19 nicklas 414 }