【问题标题】:Need Help converting JavaObject To Json in Generic Pattern需要帮助以通用模式将 Java 对象转换为 Json
【发布时间】:2021-06-13 18:11:10
【问题描述】:

我写了一个通用方法,可以很好地将任何 Json 对象转换为通用对象。

public <T> T convertJsontoObject    (String jsonObj, Class<T> any Type)
             throws JsonMappingException, JsonProcessingException 
             {
           ObjectMapper objectMap = new ObjectMapper();
              return objectMap.readValue(jsonObj, any Type);

              }   

      

但是在使用以下代码格式将通用对象类型转换为 JSON 格式时出现问题。有人会帮助我或用相关代码指导我吗?我不确定如何从通用类类型中保留对象,因为该方法不支持泛型,我希望有一个通用方法来执行转换……

 public <T> String convertObjectToJson(Class<T> anyType) 
               { String jsonStringObj = ""; 
                try { jsonStringObj = new 
               ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(anyType);}
                }




             
        

【问题讨论】:

    标签: java json algorithm spring-boot generics


    【解决方案1】:

    当你返回一个字符串时,你不需要使用泛型,你只能在方法上接收一个对象

    // you can treate try and catch inside them as you prefer
    
    public static <T> T fromJson(String json, Class<T> classToReturn) throws Exception{
        return  new ObjectMapper().readValue(json, classToReturn);
    }
    
    public static String toJson(Object obj) throws Exception{
        return new ObjectMapper().writeValueAsString(obj);
    }
    
    public static String toJsonPrettyNonNullTreatingDateTypes(Object obj) throws Exception{
        return  new ObjectMapper()
                .setSerializationInclusion(Include.NON_NULL)
                .setSerializationInclusion(Include.NON_EMPTY)
                .registerModule(new JavaTimeModule() );
                .writerWithDefaultPrettyPrinter()
                .writeValueAsString(obj);
    }
    
    
    

    使用它们

    MyObject obj = fromJson(jsonString, MyObject.class );
    
    String json = toJson(new MyObject()); //  Object can accept any types
    
    String json = toJsonPrettyNonNullTreatingDateTypes(new MyObject());
    
    

    【讨论】:

    • 谢谢!现在该方法适用于任何类对象。实际上,我花了几个小时试图编写一个适用于任何类类型的通用方法。另一个快速的问题,我如何能够创建/保留存储在泛型中的“classToReturn”类型中的任何运行时类的对象。
    • 不要忘记将您的问题标记为您喜欢的答案。关于您的问题create object in runtime 这将帮助您MyObject.class.getDeclaredConstructor().newInstance() 创建一个实例或您的类。尝试找到有关 java 中的反射
    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2020-04-30
    • 1970-01-01
    • 2022-01-05
    • 2021-10-18
    相关资源
    最近更新 更多