因不知道传递的json字符串是什么类型,解决方法:
1.可以通过if else判断类型是jsonObject还是jsonArray。
2.可以通过try catch走jsonObject还是jsonArray。
3.也可以通过以下代码,统一转成list类型传递。
- ......
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);
}
}
- [ 萱儿AXW ]