📄 jsontest.java
字号:
//========================================================================//Copyright 2004-2008 Mort Bay Consulting Pty. Ltd.//------------------------------------------------------------------------//Licensed under the Apache License, Version 2.0 (the "License");//you may not use this file except in compliance with the License.//You may obtain a copy of the License at //http://www.apache.org/licenses/LICENSE-2.0//Unless required by applicable law or agreed to in writing, software//distributed under the License is distributed on an "AS IS" BASIS,//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.//See the License for the specific language governing permissions and//limitations under the License.//========================================================================package org.mortbay.util.ajax;import java.io.StringReader;import java.lang.reflect.Array;import java.math.BigDecimal;import java.text.DateFormatSymbols;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Locale;import java.util.Map;import java.util.TimeZone;import junit.framework.TestCase;import org.mortbay.util.DateCache;import org.mortbay.util.ajax.JSON.Output;public class JSONTest extends TestCase{ String test="\n\n\n\t\t "+ "// ignore this ,a [ \" \n"+ "/* and this \n" + "/* and * // this \n" + "*/" + "{ "+ "\"onehundred\" : 100 ,"+ "\"small\":-0.2,"+ "\"name\" : \"fred\" ," + "\"empty\" : {} ," + "\"map\" : {\"a\":-1.0e2} ," + "\"array\" : [\"a\",-1.0e2,[],null,true,false] ," + "\"w0\":{\"class\":\"org.mortbay.util.ajax.JSONTest$Woggle\",\"name\":\"woggle0\",\"nested\":{\"class\":\"org.mortbay.util.ajax.JSONTest$Woggle\",\"name\":\"woggle1\",\"nested\":null,\"number\":-101},\"number\":100}" + "}"; public void testToString() { HashMap map = new HashMap(); HashMap obj6 = new HashMap(); HashMap obj7 = new HashMap(); Woggle w0 = new Woggle(); Woggle w1 = new Woggle(); w0.name="woggle0"; w0.nested=w1; w0.number=100; w1.name="woggle1"; w1.nested=null; w1.number=-101; map.put("n1",null); map.put("n2",new Integer(2)); map.put("n3",new Double(-0.00000000003)); map.put("n4","4\n\r\t\"4"); map.put("n5",new Object[]{"a",new Character('b'),new Integer(3),new String[]{},null,Boolean.TRUE,Boolean.FALSE}); map.put("n6",obj6); map.put("n7",obj7); map.put("n8",new int[]{1,2,3,4}); map.put("n9",new JSON.Literal("[{}, [], {}]")); map.put("w0",w0); obj7.put("x","value"); String s = JSON.toString(map); assertTrue(s.indexOf("\"n1\":null")>=0); assertTrue(s.indexOf("\"n2\":2")>=0); assertTrue(s.indexOf("\"n3\":-3.0E-11")>=0); assertTrue(s.indexOf("\"n4\":\"4\\n")>=0); assertTrue(s.indexOf("\"n5\":[\"a\",\"b\",")>=0); assertTrue(s.indexOf("\"n6\":{}")>=0); assertTrue(s.indexOf("\"n7\":{\"x\":\"value\"}")>=0); assertTrue(s.indexOf("\"n8\":[1,2,3,4]")>=0); assertTrue(s.indexOf("\"n9\":[{}, [], {}]")>=0); assertTrue(s.indexOf("\"w0\":{\"class\":\"org.mortbay.util.ajax.JSONTest$Woggle\",\"name\":\"woggle0\",\"nested\":{\"class\":\"org.mortbay.util.ajax.JSONTest$Woggle\",\"name\":\"woggle1\",\"nested\":null,\"number\":-101},\"number\":100}")>=0); Gadget gadget = new Gadget(); gadget.setShields(42); gadget.setWoggles(new Woggle[]{w0,w1}); s = JSON.toString(new Gadget[]{gadget}); assertTrue(s.startsWith("[")); assertTrue(s.indexOf("\"modulated\":false")>=0); assertTrue(s.indexOf("\"shields\":42")>=0); assertTrue(s.indexOf("\"name\":\"woggle0\"")>=0); assertTrue(s.indexOf("\"name\":\"woggle1\"")>=0); } /* ------------------------------------------------------------ */ /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { JSON.registerConvertor(Gadget.class,new JSONObjectConvertor(false)); } /* ------------------------------------------------------------ */ public void testParse() { Map map = (Map)JSON.parse(test); assertEquals(new Long(100),map.get("onehundred")); assertEquals("fred",map.get("name")); assertEquals(new Double(-0.2),map.get("small")); assertTrue(map.get("array").getClass().isArray()); assertTrue(map.get("w0") instanceof Woggle); assertTrue(((Woggle)map.get("w0")).nested instanceof Woggle); assertEquals(-101,((Woggle)((Woggle)map.get("w0")).nested).number); test="{\"data\":{\"source\":\"15831407eqdaawf7\",\"widgetId\":\"Magnet_8\"},\"channel\":\"/magnets/moveStart\",\"connectionId\":null,\"clientId\":\"15831407eqdaawf7\"}"; map = (Map)JSON.parse(test); } /* ------------------------------------------------------------ */ public void testParseReader() throws Exception { Map map = (Map)JSON.parse(new StringReader(test)); assertEquals(new Long(100),map.get("onehundred")); assertEquals("fred",map.get("name")); assertTrue(map.get("array").getClass().isArray()); assertTrue(map.get("w0") instanceof Woggle); assertTrue(((Woggle)map.get("w0")).nested instanceof Woggle); test="{\"data\":{\"source\":\"15831407eqdaawf7\",\"widgetId\":\"Magnet_8\"},\"channel\":\"/magnets/moveStart\",\"connectionId\":null,\"clientId\":\"15831407eqdaawf7\"}"; map = (Map)JSON.parse(test); } /* ------------------------------------------------------------ */ public void testStripComment() { String test="\n\n\n\t\t "+ "// ignore this ,a [ \" \n"+ "/* "+ "{ "+ "\"onehundred\" : 100 ,"+ "\"name\" : \"fred\" ," + "\"empty\" : {} ," + "\"map\" : {\"a\":-1.0e2} ," + "\"array\" : [\"a\",-1.0e2,[],null,true,false] ," + "} */"; Object o = JSON.parse(test,false); assertTrue(o==null); o = JSON.parse(test,true); assertTrue(o instanceof Map); assertEquals("fred",((Map)o).get("name")); } /* ------------------------------------------------------------ */ public void testQuote() { String test="\"abc123|\\\"|\\\\|\\/|\\b|\\f|\\n|\\r|\\t|\\uaaaa|\""; String result = (String)JSON.parse(test,false); assertEquals("abc123|\"|\\|/|\b|\f|\n|\r|\t|\uaaaa|",result); } /* ------------------------------------------------------------ */ public void testBigDecimal() { Object obj = JSON.parse("1.0E7"); assertTrue(obj instanceof Double); BigDecimal bd = BigDecimal.valueOf(10000000d); String string = JSON.toString(new Object[]{bd}); obj = Array.get(JSON.parse(string),0); assertTrue(obj instanceof Double); } /* ------------------------------------------------------------ */ public static class Gadget { private boolean modulated; private long shields; private Woggle[] woggles; /* ------------------------------------------------------------ */ /** * @return the modulated */ public boolean isModulated() { return modulated; } /* ------------------------------------------------------------ */ /** * @param modulated the modulated to set */ public void setModulated(boolean modulated) { this.modulated=modulated; } /* ------------------------------------------------------------ */ /** * @return the shields */ public long getShields() { return shields; } /* ------------------------------------------------------------ */ /** * @param shields the shields to set */ public void setShields(long shields) { this.shields=shields; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -