content: package testapp;
  
  import com.alibaba.fastjson.JSON;
  
  import java.math.BigInteger;
  import java.util.HashMap;
  import java.util.Map;
  
  public class FastJson37Issue {
  
      public static class BoolVal {
          private boolean v;
          public void setV(boolean v) {
              this.v = v;
          }
  
          @Override
          public String toString() {
              return String.valueOf(v);
          }
      }
  
      public static class LongVal {
          private long v;
          public void setV(long v) {
              this.v = v;
          }
  
          @Override
          public String toString() {
              return String.valueOf(v);
          }
      }
  
      public static class IntegerVal {
          private int v;
  
          public void setV(int v) {
              this.v = v;
          }
  
          @Override
          public String toString() {
              return String.valueOf(v);
          }
      }
  
      public static class FloatVal {
          private float v;
  
          public void setV(float v) {
              this.v = v;
          }
  
          @Override
          public String toString() {
              return String.valueOf(v);
          }
      }
  
      public static void gh1422() {
          String strOk = "{\"v\": 111}";
          BoolVal ok = JSON.parseObject(strOk, BoolVal.class);
          System.out.println("ok:" + ok);
  
          String strBad = "{\"v\":111}";
          BoolVal bad = JSON.parseObject(strBad, BoolVal.class);
          System.out.println("bad" + bad);
      }
  
      public static void gh1423() {
          BigInteger n = new BigInteger(String.valueOf(Long.MAX_VALUE)).add(new BigInteger("1"));
          Map<String, BigInteger> map = new HashMap<>();
          map.put("v", n);
          String strBad = JSON.toJSONString(map);
          System.out.println("prepare to parse: " + strBad);
  
          System.out.println("We expect the following line to raise NumberFormatException, but it will print out something:");
          System.out.println(JSON.parseObject(strBad, LongVal.class));
  
          System.out.println("While Long.parseLong(String) call does raise NumberFormatException:");
          System.out.println(Long.parseLong(n.toString()));
      }
  
      public static void main(String[] args) {
          String fastJsonVersion = JSON.VERSION;
          System.out.println("fastjson version: " + fastJsonVersion);
  
          Map<String, Long> intOverflowMap = new HashMap<>();
          long intOverflow = Integer.MAX_VALUE;
          intOverflowMap.put("v", intOverflow + 1);
          String sIntOverflow = JSON.toJSONString(intOverflowMap);
          System.out.println("prepare to parse overflow int val: " + sIntOverflow);
          try {
              JSON.parseObject(sIntOverflow, IntegerVal.class);
          } catch (Exception e) {
              System.out.println("We captured the Exception: " + e.getMessage());
          }
  
          Map<String, Double> floatOverflowMap = new HashMap<>();
          double floatOverflow = Float.MAX_VALUE;
          floatOverflowMap.put("v", floatOverflow + floatOverflow);
          String sFloatOverflow = JSON.toJSONString(floatOverflowMap);
          System.out.println("prepare to parse overflow float val: " + sIntOverflow);
          FloatVal floatVal = JSON.parseObject(sFloatOverflow, FloatVal.class);
          System.out.println("We expect an exception raised, but found it parsed out an invalid value: " + floatVal);
      }
  
  }
  