Homework 08: json writter#15
Conversation
cc748cb to
e100e6b
Compare
e100e6b to
8fbbbb6
Compare
| private boolean checkSimple(Class cl) { | ||
| return cl.isPrimitive() || cl == Number.class || cl == String.class || cl == Integer.class || cl == Long.class || cl == Double.class || cl == Float.class | ||
| || cl == Boolean.class || cl == Byte.class || cl == Character.class || cl == Short.class; | ||
| } |
There was a problem hiding this comment.
Еще можно их в Set запихать и потом просто проверять вхождение
There was a problem hiding this comment.
Убрала классы в Set, а сам метод в JsonUtil
|
|
||
| private List<Object> getArrayValues(Field field, Object fieldInst) { | ||
| List<Object> list = new LinkedList<>(); | ||
| if (checkSimple(field.getType().getComponentType())) { |
There was a problem hiding this comment.
По идее нам нет дела что за объект в элементе массива. Получили Object и отдали его на съедение методу сериализации, добавили результат. Тоже самое с остальными контейнерами
There was a problem hiding this comment.
Перенесла получение элементов коллекций и массивов в классы соответствующих нод
| class JsonWriterTest { | ||
| private Gson gson = new Gson(); | ||
| private JsonWriter jsonWriter = new JsonWriter(); | ||
|
|
There was a problem hiding this comment.
А давайте проверим себя еще на вот на таком тесте
@Test
void customTest(){
assertEquals(gson.toJson(null), jsonWriter.toJson(null));
assertEquals(gson.toJson(true), jsonWriter.toJson(true));
assertEquals(gson.toJson(false), jsonWriter.toJson(false));
assertEquals(gson.toJson((byte)1), jsonWriter.toJson((byte)1));
assertEquals(gson.toJson((short)2f), jsonWriter.toJson((short)2f));
assertEquals(gson.toJson(3), jsonWriter.toJson(3));
assertEquals(gson.toJson(4L), jsonWriter.toJson(4L));
assertEquals(gson.toJson(5f), jsonWriter.toJson(5f));
assertEquals(gson.toJson(6d), jsonWriter.toJson(6d));
assertEquals(gson.toJson("aaa"), jsonWriter.toJson("aaa"));
assertEquals(gson.toJson('b'), jsonWriter.toJson('b'));
assertEquals(gson.toJson(new int[] {1, 2, 3}), jsonWriter.toJson(new int[] {1, 2, 3}));
assertEquals(gson.toJson(List.of(4, 5 ,6)), jsonWriter.toJson(List.of(4, 5 ,6)));
assertEquals(gson.toJson(Collections.singletonList(7)), jsonWriter.toJson(Collections.singletonList(7)));
}
There was a problem hiding this comment.
Спасибо! Внесла изменения, чтобы этот тест проходил
| if (cl == null || checkSimple(cl)) { | ||
| while (iterator.hasNext()) { | ||
| addElement(list, iterator.next()); | ||
| } | ||
| } else { | ||
| while (iterator.hasNext()) { | ||
| list.add(new JsonWriter().parseObject(iterator.next(), new Node())); | ||
| } | ||
| } |
There was a problem hiding this comment.
Думаю вот эти штуки можно сократить. Еще раз) Нам все равно что лежит в элементе массива/коллекции/значении мапы. Это для нас должен преобразовывать new JsonWriter().parseObject. Таких мест несколько)
No description provided.