json字符串不知道类型问题

543 阅读1分钟

因不知道传递的json字符串是什么类型,解决方法:

1.可以通过if else判断类型是jsonObject还是jsonArray。

2.可以通过try catch走jsonObject还是jsonArray。

3.也可以通过以下代码,统一转成list类型传递。

  1. ......

import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
import com.webull.inst.framework.common.util.JsonUtils;
import com.webull.st.application.api.bean.model.ApplicationInfo;

import java.util.ArrayList;
import java.util.List;


public class TestComponent {

    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    public static <T> List<T> convertJsonStr(String needConvertStr, Class<T> needTypeClass) {
        JavaType javaType = OBJECT_MAPPER.getTypeFactory().constructParametricType(List.class, needTypeClass);
        try {
            return OBJECT_MAPPER.readValue(needConvertStr, javaType);
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }

    public static void main(String[] args) {
        ApplicationInfo vo = new ApplicationInfo();
        vo.setFullName("sa");
        vo.setMiddleName("sa");

        List<ApplicationInfo> list = new ArrayList<>();
        list.add(new ApplicationInfo() {{
            setFullName("sa");
            setAliasName("sa");
        }});
        list.add(new ApplicationInfo() {{
            setFullName("sa");
            setAliasName("sa");
        }});

        List<ApplicationInfo> applicationInfos1 = convertJsonStr(JsonUtils.toJson(Lists.newArrayList(vo)), ApplicationInfo.class);
        List<ApplicationInfo> applicationInfos2 = convertJsonStr(JsonUtils.toJson(list), ApplicationInfo.class);
        System.out.println(applicationInfos1);
        System.out.println(applicationInfos2);
    }

}


image.png


  • [ 萱儿AXW ]