TestAdvancedMapper.java

package net.minidev.json.testMapping;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.text.SimpleDateFormat;
import java.util.Date;
import net.minidev.asm.BeansAccessConfig;
import net.minidev.json.JSONValue;
import org.junit.jupiter.api.Test;

public class TestAdvancedMapper {
  public static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

  @Test
  public void testCustomBean() throws Exception {
    BeansAccessConfig.addTypeMapper(Object.class, MyLocalConverterot.class);
    String s = "{'val':2,'date':'19/04/2010'}";
    TestBean r = JSONValue.parseWithException(s, TestBean.class);
    assertEquals("19/04/2010", sdf.format(r.date));
  }

  public static class TestBean {
    public int val;
    public Date date;
  }

  public static class MyLocalConverterot {

    public static Date fromString(Object text) throws Exception {
      if (text == null) return null;
      synchronized (sdf) {
        return sdf.parse(text.toString());
      }
    }
  }
}