aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/msb/sdk/discovery/util/JacksonJsonUtil.java
blob: 382dc64be9e8725748658d2167a32977c8bf83af (plain)
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
127
128
129
130
131
132
/*******************************************************************************
 * Copyright 2017 ZTE, Inc. and others.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 ******************************************************************************/
/**
 * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE)
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
package org.onap.msb.sdk.discovery.util;

import org.onap.msb.sdk.discovery.common.RouteException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonJsonUtil {

  private static final Logger logger = LoggerFactory.getLogger(JacksonJsonUtil.class);

  private static ObjectMapper mapper;

  /**
   * 获取ObjectMapper实例
   * 
   * @param createNew 方式:true,新实例;false,存在的mapper实例
   * @return
   */
  public static synchronized ObjectMapper getMapperInstance() {
    if (mapper == null) {
      mapper = new ObjectMapper();
    }
    return mapper;
  }

  /**
   * 将java对象转换成json字符串
   * 
   * @param obj 准备转换的对象
   * @return json字符串
   * @throws Exception
   */
  public static String beanToJson(Object obj) throws RouteException {
    String json = null;
    try {
      ObjectMapper objectMapper = getMapperInstance();
      json = objectMapper.writeValueAsString(obj);
    } catch (Exception e) {
      String errorMsg = "Class beanToJson faild";
      throwsRouteException(errorMsg, e, "BEAN_TO_JSON_FAILD");
    }
    return json;
  }



  /**
   * 将json字符串转换成java对象
   * 
   * @param json 准备转换的json字符串
   * @param cls 准备转换的类
   * @return
   * @throws Exception
   */
  public static Object jsonToBean(String json, Class<?> cls) throws RouteException {
    Object vo = null;
    try {
      ObjectMapper objectMapper = getMapperInstance();


      vo = objectMapper.readValue(json, cls);

    } catch (Exception e) {
      String errorMsg = cls + " JsonTobean faild:" + e.getMessage();
      throwsRouteException(errorMsg, e, "JSON_TO_BEAN_FAILD");
    }
    return vo;
  }


  /**
   * 将json字符串转换成java集合对象
   * 
   * @param json 准备转换的json字符串
   * @param cls 准备转换的类
   * @return
   * @throws Exception
   */

  public static <T> T jsonToListBean(String json, TypeReference<T> valueTypeRef) {
    try {

      ObjectMapper objectMapper = getMapperInstance();


      return objectMapper.readValue(json, valueTypeRef);

    } catch (Exception e) {
      String errorMsg = " JsonTobean faild:" + e.getMessage();
      logger.error(errorMsg);
    }
    return null;
  }



  private static void throwsRouteException(String errorMsg, Exception e, String errorCode)
      throws RouteException {
    String msg = errorMsg + ".errorMsg:" + e.getMessage();
    logger.error(msg);
    throw new RouteException(errorMsg, errorCode);
  }
}