package com.jsoniter; import com.jsoniter.any.Any; import junit.framework.TestCase; import org.junit.Assert; import java.io.IOException; public class TestNested extends TestCase { public void test_array_of_objects() throws IOException { JsonIterator iter = JsonIterator.parse( "[{'field1':'11','field2':'12'},{'field1':'21','field2':'22'}]".replace('\'', '"')); SimpleObject[] objects = iter.read(SimpleObject[].class); Assert.assertArrayEquals(new SimpleObject[]{ new SimpleObject() {{ field1 = "11"; field2 = "12"; }}, new SimpleObject() {{ field1 = "21"; field2 = "22"; }} }, objects); iter.reset(iter.buf); Any any = iter.readAny(); assertEquals("22", any.toString(1, "field2")); } public void test_get_all_array_elements_via_any() throws IOException { Any any = JsonIterator.deserialize(" [ { \"bar\": 1 }, {\"bar\": 3} ]"); Any result = any.get('*', "bar"); assertEquals("[ 1, 3]", result.toString()); any = Any.rewrap(any.asList()); // make it not lazy result = any.get('*', "bar"); assertEquals("[ 1, 3]", result.toString()); } public void test_get_all_object_values_via_any() throws IOException { Any any = JsonIterator.deserialize("{\"field1\":[1,2],\"field2\":[3,4]}"); Any result = any.get('*', 1); assertEquals("{\"field1\":2,\"field2\":4}", result.toString()); any = Any.rewrap(any.asMap()); // make it not lazy result = any.get('*', 1); assertEquals("{\"field1\":2,\"field2\":4}", result.toString()); } public void test_get_all_with_some_invalid_path() throws IOException { Any any = JsonIterator.deserialize(" [ { \"bar\": 1 }, {\"foo\": 3} ]"); Any result = any.get('*', "bar"); assertEquals("[ 1]", result.toString()); any = Any.rewrap(any.asList()); // make it not lazy result = any.get('*', "bar"); assertEquals("[ 1]", result.toString()); any = JsonIterator.deserialize("{\"field1\":[1,2],\"field2\":[3]}"); result = any.get('*', 1); assertEquals("{\"field1\":2}", result.toString()); any = Any.rewrap(any.asMap()); // make it not lazy result = any.get('*', 1); assertEquals("{\"field1\":2}", result.toString()); } }