public void test_for_issue() throws Exception { String json = "{\"a\":1,\"b\":2}"; final AtomicInteger count = new AtomicInteger(0); ExtraProcessor extraProcessor = new ExtraProcessor() { public void processExtra(Object object, String key, Object value) { System.out.println("setter not found, class " + object.getClass().getName() + ", property " + key); count.incrementAndGet(); } }; A a = JSON.parseObject(json,A.class,extraProcessor); assertEquals(1,a.a); assertEquals(1, count.intValue()); B b = JSON.parseObject(json,B.class,extraProcessor); assertEquals(1,b.a); assertEquals(2, count.intValue()); }
public static final <T> T parseObject(String input, Type clazz, ParserConfig config, ParseProcess processor, int featureValues, Feature... features) { if (input == null) { return null; } for (Feature featrue : features) { featureValues = Feature.config(featureValues, featrue, true); } DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues); if (processor instanceof ExtraTypeProvider) { parser.getExtraTypeProviders().add((ExtraTypeProvider) processor); } if (processor instanceof ExtraProcessor) { parser.getExtraProcessors().add((ExtraProcessor) processor); } T value = parser.parseObject(clazz); parser.handleResovleTask(value); parser.close(); return value; }
@SuppressWarnings("unchecked") public static <T> T parseObject(String input, Type clazz, ParserConfig config, ParseProcess processor, int featureValues, Feature... features) { if (input == null) { return null; } if (features != null) { for (Feature feature : features) { featureValues |= feature.mask; } } DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues); if (processor != null) { if (processor instanceof ExtraTypeProvider) { parser.getExtraTypeProviders().add((ExtraTypeProvider) processor); } if (processor instanceof ExtraProcessor) { parser.getExtraProcessors().add((ExtraProcessor) processor); } if (processor instanceof FieldTypeResolver) { parser.setFieldTypeResolver((FieldTypeResolver) processor); } } T value = (T) parser.parseObject(clazz, null); parser.handleResovleTask(value); parser.close(); return (T) value; }
public static void processExtra(DefaultJSONParser parser, Object object, String key, Object value) { List<ExtraProcessor> extraProcessors = parser.getExtraProcessorsDirect(); if (extraProcessors != null) { for (ExtraProcessor process : extraProcessors) { process.processExtra(object, key, value); } } }
public static void processExtra(DefaultJSONParser parser, Object object, String key, Object value) { List<ExtraProcessor> extraProcessors = parser.getExtraProcessorsDirect(); if (extraProcessors == null) { return; } for (ExtraProcessor process : extraProcessors) { process.processExtra(object, key, value); } }
@SuppressWarnings("unchecked") public static final <T> T parseObject(String input, Type clazz, ParserConfig config, ParseProcess processor, int featureValues, Feature... features) { if (input == null) { return null; } for (Feature featrue : features) { featureValues = Feature.config(featureValues, featrue, true); } DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues); if (processor instanceof ExtraTypeProvider) { parser.getExtraTypeProviders().add((ExtraTypeProvider) processor); } if (processor instanceof ExtraProcessor) { parser.getExtraProcessors().add((ExtraProcessor) processor); } T value = (T) parser.parseObject(clazz); parser.handleResovleTask(value); parser.close(); return (T) value; }
@SuppressWarnings("unchecked") public static final <T> T parseObject(String input, Type clazz, ParserConfig config, ParseProcess processor, int featureValues, Feature... features) { if (input == null) { return null; } for (Feature featrue : features) { featureValues = Feature.config(featureValues, featrue, true); } DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues); if (processor instanceof ExtraTypeProvider) { parser.getExtraTypeProviders().add((ExtraTypeProvider) processor); } if (processor instanceof ExtraProcessor) { parser.getExtraProcessors().add((ExtraProcessor) processor); } T value = (T) parser.parseObject(clazz); handleResovleTask(parser, value); parser.close(); return (T) value; }
public List<ExtraProcessor> getExtraProcessors() { if (this.extraProcessors == null) { this.extraProcessors = new ArrayList(2); } return this.extraProcessors; }
public List<ExtraProcessor> getExtraProcessorsDirect() { return this.extraProcessors; }
public List<ExtraProcessor> getExtraProcessors() { if (extraProcessors == null) { extraProcessors = new ArrayList<ExtraProcessor>(2); } return extraProcessors; }
public List<ExtraProcessor> getExtraProcessorsDirect() { return extraProcessors; }