JavaWeb中内部调用外部post、get方法

ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

演示

Java对象转换为JSON对象:

public class ObjectMapperTest {

    public static void main(String[] args) throws IOException {

        //序列化的时候序列对象的所有属性  
        objectMapper.setSerializationInclusion(Include.ALWAYS);  
        //反序列化的时候如果多了其他属性,不抛出异常  
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);  
        //如果是空对象的时候,不抛异常  
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);  
        //创建实体类
        Person person = new Person(1, "tom", "123");
        //实体类转换为json字符串
        String jsonString = objectMapper.writeValueAsString(person);
        System.out.println("JsonString: " + jsonString);
        
        //字符串转换为类
        Person person1 = objectMapper.readValue(jsonString, Person.class);
        System.out.println(person1.toString());

    }

}

Person 类:


public class Person {
    private int id;
    private String name;
    private String password;

    public Person() {
        super();
    }

    public Person(int id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }
    /*省略get和set方法*/
}

Java数组对象和JSON数组对象转换

public class ObjectMapperTest {

    public static void main(String[] args) throws IOException {

        ObjectMapper objectMapper = new ObjectMapper();
        //Java数组转换为JSON数组
        Person person = new Person(1, "tom", "123");
        Person person1 = new Person(2, "jack", "123445");
        List<Person> personList = new ArrayList<>();
        personList.add(person);
        personList.add(person1);
        String jsonString = objectMapper.writeValueAsString(personList);
        System.out.println("JsonString List: " + jsonString);
        //Json数组转换为Java数组
        //JavaType
        JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Person.class);
        List<Person> list = objectMapper.readValue(jsonString,javaType);
        //打印出list中的值
        for (Person person2 : list) {
            System.out.println(person2.toString());
        }
    }

}

内部调用

post方法调用

	public <T> String post(String url, T param) {

		log.info("请求方式:POST");
		log.info("请求URL:{}", url);
		try {
            //入参转换字符串形式
			String paramSerialize = objectMapper.writeValueAsString(param);
			log.info("请求参数:{}", paramSerialize);
            //返回的出参
			String response = OkHttp3.getInstance().post(url, paramSerialize);
			log.info("请求返回数据:{}", response);
			return response;
		} catch (JsonProcessingException e) { // 捕获对象序列化异常
			log.error(e.getMessage());
			throw new ReddotServiceException(ExceptionCode.SYS_JSON_SERIALIZE_ERROE);
		} catch (IOException e) { 
			log.error(e.getMessage());
			throw new ReddotServiceException(ExceptionCode.SYS_ERROR);
		}

	}

get方法调用

public <T> String get(String url, T param) {
		log.info("请求方式:GET");
		log.info("请求URL:{}", url);
		try {
			log.info("请求参数:{}", objectMapper.writeValueAsString(param));
            // 入参转换为Map 格式例: id(key),1(value)
			Map paramMap = objectMapper.readValue(objectMapper.writeValueAsString(param), new TypeReference<Map>() {
			});
			String response = (param == null ? OkHttp3.getInstance().get(url) : OkHttp3.getInstance().get(url, paramMap));
			log.info("请求返回数据:{}", response);
			//判断返回参数是否成功
			return response;
		} catch (JsonProcessingException e) {
			log.error(e.getMessage());
			throw new ReddotServiceException(ExceptionCode.SYS_JSON_SERIALIZE_ERROE);
		} catch (IOException e) {
			log.error(e.getMessage());
			throw new ReddotServiceException(ExceptionCode.SYS_ERROR);
		}

	}

传递参数的时候,就算你用的是map,那传输的时候也是json字符串,当然也可以直接试用JSON串进行传输。

大部分调用的url地址入参都能为JSON字符串形式,当然用Map也是可以的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值