반응형
Java CBOR parsing, CBOR to JSON Object
CBOR 타입에 대한 설명은 아래의 Link를 참고하세요.
Link : http://cbor.io/impls.html
어떤 문제인지는 모르겠지만,
co.nstant.in 에서 제공하는 CBOR 디코더를 사용하면, Boolean Type의 데이터가 SIMPLE_VALUE 로 디토딩 되는 문제가 있었습니다.
예) compile group: 'co.nstant.in', name: 'cbor', version: '0.4'
Link : JAVA COBR 파싱 CBOR이란 Concise Binary Object Representation
그래서 jackson에서 제공하는 라이브러리를 활용하니 디코드가 잘 되더군요.
2개의 라이브러리가 필요합니다. jackson.dataformat과 jackson.databind
maven과 gradle은 아래 참고
[maven]
1
2
3
4
5
6
7
8
9
10
11
12 |
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-cbor -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-cbor</artifactId>
<version>2.9.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency> |
cs |
[gradle]
1
2 |
compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: '2.9.6'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.6' |
cs |
데이터 변환은 아래의 코드를 참고하세요.
1
2
3
4
5
6
7
8
9
10
11 |
ByteArrayInputStream bais = new ByteArrayInputStream(data);
/* CBOR decode - use jackson Library */
CBORFactory cf = new CBORFactory();
ObjectMapper mapper = new ObjectMapper(cf);
try {
/* CBOR 을 JsonNode로 변환 */
JsonNode jnode = mapper.readValue(bais, JsonNode.class);
cms.insertMsd(jnode);
} catch (Exception e) {
e.printStackTrace();
} |
cs |
변환된 JsonNode 데이터는 .get(index) 로 접근이 가능합니다.
예를들어, 변환한 jnode가 아래와 같다면
[1,[1,1560816947,false,""]]
순서대로
1
2
3
4
5
6 |
int firstData = jnode.get(0).asInt();
JsonNode subNode = jnode.get(1);
int secondData = subNode.get(0).asInt();
int thirdData = subNode.get(1).asInt();
boolean fourthData = subNode.get(2).asBoolean();
String fifthData = subNode.get(3).textValue(); |
cs |
이렇게 추출하실 수 있습니다.
반응형
'Programing > JAVA' 카테고리의 다른 글
Java Constructor 자바 생성자 이 것만 보면 이해 끝 (2) | 2018.07.25 |
---|---|
JAVA 자바 용어 정리, 객체지향 용어 정리, Object, Class, Instance (0) | 2018.07.24 |
JDBC, DBCP란? 웹 어플리케이션의 DB접속에 대한 고찰 (0) | 2018.07.02 |
Java boxing, unboxing 자바 박싱 언박싱 Wrapper Class 확실히 이해하기 (0) | 2018.06.12 |
Java 8 Stream 을 사용해보자. About Stream in collection of java8 (0) | 2018.05.23 |
댓글