实现的业务逻辑是这样的:
通过http请求,返回一个json格式的数据,然后将json数据转化为java对象返回给调用方。
Http采用OkHttp库,json转化采用jackson库。
一.简介
1)okhttpclient
OkHttpClient官网: http://square.github.io/okhttp/
OkHttp GitHub地址:https://github.com/square/okhttp
最常用的是两个http请求是get和post,我下面的代码就只用到这两个请求。
Maven依赖:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.6.0</version>
</dependency>
2)jackson
Jackson的文档:http://wiki.fasterxml.com/JacksonInFiveMinutes
Jackson的maven依赖
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-parent</artifactId>
<version>2.8</version>
</dependency>
由于采用了javabean的方式,所以json和java类的互转变得简单。
二.代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
|
json数据如下:
[{"txid":"ad416e1b4b8b807b4a0946affb17cf253c1af7a7e6c6a9e21fac2e93b2c88746","action":"received","amount":10000,"fees":3800,"time":1486111663,"confirmations":179,"outputs":[{"amount":10000,"address":"2MxDyD4idPv8LqYNP4Aq4QExRhTckqNK8zK"}]},{"txid":"2dadf7b391935af15f5f70e775ed5d7a03d629db4bdde1cd93e31b8311db4949","action":"received","amount":1000000,"fees":4416,"time":1485241194,"confirmations":1721,"outputs":[{"amount":1000000,"address":"2MxDyD4idPv8LqYNP4Aq4QExRhTckqNK8zK"}]}]
三.问题解决
Json错误:Can not deserialize instance of xx out of START_ARRAY token
Server
这个可能是后台返回的是数组类型的json,所以transaction要用数组
return mapper.readValue(newTx,Transaction[].class);
json错误:
No suitable constructor found for type [xxxx]: can not instantiate from JSON object (need to add/enable type information?) at xxx
这个需要java class中的内部类使用静态类,见transaction类中的output内部类。
后续复杂应用,再接着写。
OkHttp官方教程解析-彻底入门OkHttp使用
https://blog.youkuaiyun.com/u013651026/article/details/79738059