package nebula.data.json; import java.io.StringReader; import junit.framework.TestCase; import nebula.lang.Type; import nebula.lang.TypeLoaderForTest; import org.codehaus.jackson.JsonFactory; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonToken; public class JsonEntityHelperProviderTest extends TestCase { TypeLoaderForTest loader; Type t; JsonFactory factory; protected void setUp() throws Exception { super.setUp(); factory = new JsonFactory(); loader = new TypeLoaderForTest(); } protected void tearDown() throws Exception { super.tearDown(); } public void testRead() throws Exception { // @for String json = "" + "{" + " \"name\":\"wangshilian\"," + " \"age\":[13,14]," + " \"values\":[" + " {\"name\":\"wangshilian\"}," + " {\"name\":\"wangshilian\"}" + " ]" + "}"; JsonToken t = null; JsonParser parser = factory.createJsonParser(new StringReader(json)); t = parser.nextToken(); assertEquals(JsonToken.START_OBJECT, t); t = parser.nextToken(); assertEquals(JsonToken.FIELD_NAME, t); assertEquals("name", parser.getCurrentName()); t = parser.nextToken(); assertEquals(JsonToken.VALUE_STRING, t); assertEquals("wangshilian", parser.getText()); t = parser.nextToken(); assertEquals(JsonToken.FIELD_NAME, t); assertEquals("age", parser.getCurrentName()); t = parser.nextToken(); assertEquals(JsonToken.START_ARRAY, t); t = parser.nextToken(); assertEquals(JsonToken.VALUE_NUMBER_INT, t); assertEquals(13, parser.getIntValue()); t = parser.nextToken(); assertEquals(JsonToken.VALUE_NUMBER_INT, t); assertEquals(14, parser.getIntValue()); t = parser.nextToken(); assertEquals(JsonToken.END_ARRAY, t); t = parser.nextToken(); assertEquals(JsonToken.FIELD_NAME, t); assertEquals("values", parser.getCurrentName()); t = parser.nextToken(); assertEquals(JsonToken.START_ARRAY, t); t = parser.nextToken(); assertEquals(JsonToken.START_OBJECT, t); t = parser.nextToken(); assertEquals(JsonToken.FIELD_NAME, t); assertEquals("name", parser.getCurrentName()); t = parser.nextToken(); assertEquals(JsonToken.VALUE_STRING, t); assertEquals("wangshilian", parser.getText()); t = parser.nextToken(); assertEquals(JsonToken.END_OBJECT, t); t = parser.nextToken(); assertEquals(JsonToken.START_OBJECT, t); t = parser.nextToken(); assertEquals(JsonToken.FIELD_NAME, t); assertEquals("name", parser.getCurrentName()); t = parser.nextToken(); assertEquals(JsonToken.VALUE_STRING, t); assertEquals("wangshilian", parser.getText()); t = parser.nextToken(); assertEquals(JsonToken.END_OBJECT, t); t = parser.nextToken(); assertEquals(JsonToken.END_ARRAY, t); parser.close(); } }