栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何参数化Java中的响应解析?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何参数化Java中的响应解析?

您应该将

JSON
反序列化与应用程序的其他部分分开。您不能为所有响应实现一种方法,但是响应数量可能有限,并且可以为每个类声明一些简单方法。通常,您只能使用一种具有如下声明的方法:

public <T> T deserialise(String payload, Class<T> expectedClass) {    Objects.requireNonNull(payload);    Objects.requireNonNull(expectedClass);    try {        return mapper.readValue(payload, expectedClass);    } catch (IOException e) {        throw new IllegalStateException("JSON is not valid!", e);    }}

现在,您可以反序列化所需的所有有效负载。您需要提供要接收的

JSON
有效负载和
POJO
类。

显示该概念的简单工作解决方案:

import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.DeserializationFeature;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SerializationFeature;import java.io.IOException;import java.util.Objects;public class JsonMapper {    private final ObjectMapper mapper = new ObjectMapper();    public JsonMapper() {        // configure mapper instance if required        mapper.enable(SerializationFeature.INDENT_OUTPUT);        mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);        // etc...    }    public String serialise(Object value) {        try { return mapper.writevalueAsString(value);        } catch (JsonProcessingException e) { throw new IllegalStateException("Could not generate JSON!", e);        }    }    public <T> T deserialise(String payload, Class<T> expectedClass) {        Objects.requireNonNull(payload);        Objects.requireNonNull(expectedClass);        try { return mapper.readValue(payload, expectedClass);        } catch (IOException e) { throw new IllegalStateException("JSON is not valid!", e);        }    }    public Foo parseResponseFoo(String payload) {        return deserialise(payload, Foo.class);    }    public Bar parseResponseBar(String payload) {        return deserialise(payload, Bar.class);    }    public static void main(String[] args) {        JsonMapper jsonMapper = new JsonMapper();        String bar = "{"bar" : 2}";        System.out.println(jsonMapper.parseResponseBar(bar));        String foo = "{"foo" : 1}";        System.out.println(jsonMapper.parseResponseFoo(foo));        System.out.println("General method:");        System.out.println(jsonMapper.deserialise(foo, Foo.class));        System.out.println(jsonMapper.deserialise(bar, Bar.class));    }}class Foo {    public int foo;    @Override    public String toString() {        return "Foo{" +     "foo=" + foo +     '}';    }}class Bar {    public int bar;    @Override    public String toString() {        return "Bar{" +     "bar=" + bar +     '}';    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号