개발환경 : egov3.9
이디러리움 샘플을 가지고 왔다.
nodejs는 자바스크립트 기반이니 json파싱은 일도 아닌데 ㅎㅎㅎ
스프링에서는 경험이 적다보니 시간이 좀 걸렸다
공유겸 정리해 놓을려구 한다.
해당 트렌젝션의 result값을 VO에 집어 넣고
출력하는 부분을 만들 예정이다.
ethscan.json 이더리움 송금 트랜젝션
{ "status":"1", "message":"OK", "result":[ { "blockNumber":"4473164", "timeStamp":"1542787987", "hash":"0xac86d44f53a22e4b12853f5f8234f95b831e1521694c4072fd6a97b219ec3cb7", "nonce":"17012682", "data": { "blockHash":"0x4ee9b9d29f78f7aab230613f8827e9e070d5b60b2cd06d61e83b17aaaa5b1e67", "transactionIndex":"54", "from":"0x81b7e08f65bdf5648606c89998a9cc8164397647", "to":"0xff0797d06e8f9897b1d5066c10d9497ed7054a47" }, "Price": [ { "value":"1000000000000000000", "gas":"21000", "gasPrice":"1000000000" }, { "value":"1000000000000000000", "gas":"21000", "gasPrice":"1000000000" }, { "value":"1000000000000000000", "gas":"21000", "gasPrice":"1000000000" } ] } ] } |
Json 파싱은 이상한거 쓰지말고 org.json.simple 쓰는게 가장 좋다
pom.xml에 추가 하고
<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency>
|
VO
package egovframework.example.sample.service;
import java.util.List;
import lombok.Getter; import lombok.Setter; import lombok.ToString;
@Getter @Setter @ToString public class LombokVO {
private String blockNumber; private String timeStamp; private String hash; private String nonce; private String blockHash; private String transactionIndex; private String from; private String to;
public Data data; class Data{ private String blockHash; private String transactionIndex; private String from; private String to; } public List<Price> Price; class Price{ private String value; private String gas; private String gasPrice; } }
|
컨트롤러
package egovframework.example.sample.web;
import java.io.FileReader; import java.util.List;
import egovframework.example.sample.service.EgovSampleService; import egovframework.example.sample.service.LombokVO; import egovframework.example.sample.service.SampleDefaultVO; import egovframework.example.sample.service.SampleVO;
import egovframework.rte.fdl.property.EgovPropertyService; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.support.SessionStatus; import org.springmodules.validation.commons.DefaultBeanValidator; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException;
@Controller public class EgovSampleController { @RequestMapping(value = "/jsonList.do") public String jsonList(SampleVO sampleVO) throws Exception { Object jsonVO = new LombokVO(); JSONParser jsonParser = new JSONParser(); JSONObject jsonObject = (JSONObject) jsonParser.parse(new FileReader("C:\\work-space\\json-test\\jsonsample\\ethscan.json"));
jsonVO =jsonObject.get("result"); //System.out.println(""); System.out.println("jsonList : " + jsonVO); return null; }
}
|
배열 형식일때는 Array로 VO클래스를 만들고
Object 형식일때는 List로 VO로 만들면 된다.
그 뒤로는 알아서 잘 밖힌다.
접근 할때는 일반 클래스 처럼 . 사용하여 접근하면 된다.