Json与javaBean之间的转换工具类

Json与javaBean之间的转换工具类

/** 
 * Json与javaBean之间的转换工具类 
 * 
 * @author 晚风工作室 www.soservers.com 
 * @version 20111221 
 * 
 * {@code 现使用json-lib组件实现 
 *    需要 
 *     json-lib-2.4-jdk15.jar 
 *     ezmorph-1.0.6.jar 
 *     commons-collections-3.1.jar 
 *     commons-lang-2.0.jar 
 *    支持 
 * } 
 */

标签: JSON EZMorph Commons-collections

代码片段(5)[全屏查看所有代码]

1. [代码]Json与javaBean之间的转换工具类

?


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

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import net.sf.json.JsonConfig;

/**

 * Json与javaBean之间的转换工具类

 *

 * @author 晚风工作室 www.soservers.com

 * @version 20111221

 *

 * {@code   现使用json-lib组件实现

 *          需要

 *              json-lib-2.4-jdk15.jar

 *              ezmorph-1.0.6.jar

 *              commons-collections-3.1.jar

 *              commons-lang-2.0.jar

 *          支持

 * }

 */

public class JsonPluginsUtil {

    /** 

     * 从一个JSON 对象字符格式中得到一个java对象 

     *  

     * @param jsonString 

     * @param beanCalss 

     * @return 

     */

    @SuppressWarnings("unchecked")

    public static <T> T jsonToBean(String jsonString, Class<T> beanCalss) {

        

        JSONObject jsonObject = JSONObject.fromObject(jsonString);

        T bean = (T) JSONObject.toBean(jsonObject, beanCalss);

        

        return bean;

        

    }

    /** 

     * 将java对象转换成json字符串 

     *

     * @param bean 

     * @return 

     */

    public static String beanToJson(Object bean) {

        JSONObject json = JSONObject.fromObject(bean);

        

        return json.toString();

    }

    

    /** 

     * 将java对象转换成json字符串 

     *

     * @param bean 

     * @return 

     */

    public static String beanToJson(Object bean, String[] _nory_changes, boolean nory) {

        JSONObject json = null;

        

        if(nory){//转换_nory_changes里的属性

            

            Field[] fields = bean.getClass().getDeclaredFields();

            String str = "";

            for(Field field : fields){

//              System.out.println(field.getName());

                str+=(":"+field.getName());

            }

            fields = bean.getClass().getSuperclass().getDeclaredFields();

            for(Field field : fields){

//              System.out.println(field.getName());

                str+=(":"+field.getName());

            }

            str+=":";

            for(String s : _nory_changes){

                str = str.replace(":"+s+":", ":");

            }

            json = JSONObject.fromObject(bean,configJson(str.split(":")));

            

        }else{//转换除了_nory_changes里的属性

            

            

            json = JSONObject.fromObject(bean,configJson(_nory_changes));

        }

        

        

        

        return json.toString();

    }

     private static JsonConfig configJson(String[] excludes) {  

                JsonConfig jsonConfig = new JsonConfig();  

                jsonConfig.setExcludes(excludes);  

//

                jsonConfig.setIgnoreDefaultExcludes(false);  

//

//              jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);  

//              jsonConfig.registerJsonValueProcessor(Date.class,  

//

//                  new DateJsonValueProcessor(datePattern));  

              

                return jsonConfig;  

            

    /**

     * 将java对象List集合转换成json字符串 

     * @param beans

     * @return

     */

    @SuppressWarnings("unchecked")

    public static String beanListToJson(List beans) {

        

        StringBuffer rest = new StringBuffer();

        

        rest.append("[");

        

        int size = beans.size();

        

        for (int i = 0; i < size; i++) {

            

            rest.append(beanToJson(beans.get(i))+((i<size-1)?",":""));

        }

        

        rest.append("]");

        

        return rest.toString();

    }

    

    /**

     *

     * @param beans

     * @param _no_changes

     * @return

     */

    @SuppressWarnings("unchecked")

    public static String beanListToJson(List beans, String[] _nory_changes, boolean nory) {

        

        StringBuffer rest = new StringBuffer();

        

        rest.append("[");

        

        int size = beans.size();

        

        for (int i = 0; i < size; i++) {

            try{

                rest.append(beanToJson(beans.get(i),_nory_changes,nory));

                if(i<size-1){

                    rest.append(",");

                }

            }catch(Exception e){

                e.printStackTrace();

            }

        }

        

        rest.append("]");

        

        return rest.toString();

    }

    /** 

     * 从json HASH表达式中获取一个map,改map支持嵌套功能 

     *

     * @param jsonString 

     * @return 

     */

    @SuppressWarnings({ "unchecked" })

    public static Map jsonToMap(String jsonString) {

        

        JSONObject jsonObject = JSONObject.fromObject(jsonString);

        Iterator keyIter = jsonObject.keys();

        String key;

        Object value;

        Map valueMap = new HashMap();

        while (keyIter.hasNext()) {

            

            key = (String) keyIter.next();

            value = jsonObject.get(key).toString();

            valueMap.put(key, value);

            

        }

        return valueMap;

    }

    

    /**

     * map集合转换成json格式数据

     * @param map

     * @return

     */

    public static String mapToJson(Map<String, ?> map, String[] _nory_changes, boolean nory){

        

        String s_json = "{";

        

         Set<String> key = map.keySet();

         for (Iterator<?> it = key.iterator(); it.hasNext();) {

             String s = (String) it.next();

             if(map.get(s) == null){

                 

             }else if(map.get(s) instanceof List<?>){

                 s_json+=(s+":"+JsonPluginsUtil.beanListToJson((List<?>)map.get(s), _nory_changes, nory));

                

             }else{

                 JSONObject json = JSONObject.fromObject(map);

                 s_json += (s+":"+json.toString());;

             }

             

             if(it.hasNext()){

                 s_json+=",";

             }

        }

         s_json+="}";

        return s_json;

    }

    /** 

     * 从json数组中得到相应java数组 

     *

     * @param jsonString 

     * @return 

     */

    public static Object[] jsonToObjectArray(String jsonString) {

        

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        

        return jsonArray.toArray();

    }

    

    public static String listToJson(List<?> list) {

        

        JSONArray jsonArray = JSONArray.fromObject(list);

        

        return jsonArray.toString();

    }

    /** 

     * 从json对象集合表达式中得到一个java对象列表 

     *

     * @param jsonString 

     * @param beanClass 

     * @return 

     */

    @SuppressWarnings("unchecked")

    public static <T> List<T> jsonToBeanList(String jsonString, Class<T> beanClass) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        JSONObject jsonObject;

        T bean;

        int size = jsonArray.size();

        List<T> list = new ArrayList<T>(size);

        for (int i = 0; i < size; i++) {

            jsonObject = jsonArray.getJSONObject(i);

            bean = (T) JSONObject.toBean(jsonObject, beanClass);

            list.add(bean);

        }

        

        return list;

    }

    /** 

     * 从json数组中解析出java字符串数组 

     *

     * @param jsonString 

     * @return 

     */

    public static String[] jsonToStringArray(String jsonString) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        String[] stringArray = new String[jsonArray.size()];

        int size = jsonArray.size();

        for (int i = 0; i < size; i++) {

            stringArray[i] = jsonArray.getString(i);

        }

        return stringArray;

    }

    /** 

     * 从json数组中解析出javaLong型对象数组 

     *

     * @param jsonString 

     * @return 

     */

    public static Long[] jsonToLongArray(String jsonString) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        int size = jsonArray.size();

        Long[] longArray = new Long[size];

        

        for (int i = 0; i < size; i++) {

            

            longArray[i] = jsonArray.getLong(i);

        }

        

        return longArray;

        

    }

    /** 

     * 从json数组中解析出java Integer型对象数组 

     *

     * @param jsonString 

     * @return 

     */

    public static Integer[] jsonToIntegerArray(String jsonString) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        int size = jsonArray.size();

        Integer[] integerArray = new Integer[size];

        

        for (int i = 0; i < size; i++) {

            

            integerArray[i] = jsonArray.getInt(i);

        }

        

        return integerArray;

        

    }

    /** 

     * 从json数组中解析出java Double型对象数组 

     *

     * @param jsonString 

     * @return 

     */

    public static Double[] jsonToDoubleArray(String jsonString) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        int size = jsonArray.size();

        Double[] doubleArray = new Double[size];

        

        for (int i = 0; i < size; i++) {

            

            doubleArray[i] = jsonArray.getDouble(i);

        }

        

        return doubleArray;

        

    }

}

2. [文件] json-lib-2.1.jar ~ 122KB     下载(328)

3. [文件] ezmorph-1.0.6.jar ~ 84KB     下载(276)

4. [文件] commons-collections-3.2.jar ~ 558KB     下载(282)

5. [文件] commons-lang-2.5.jar ~ 273KB     下载(262)

本文转自:http://www.oschina.net/code/snippet_931591_17607

时间: 2024-12-20 23:34:09

Json与javaBean之间的转换工具类的相关文章

IDEA使用GsonFormat完成JSON和JavaBean之间的转换

原文地址:https://www.leshalv.net/posts/12625/ 前言: 之前处理接口传来的一堆数据,用jsonObject很难受,后面就用gosn来弄,配合这个工具体验很好. 转: 最近一直在对接接口,上游返回的都是JSON数据,我们需要将这些数据进行保存,我们可以解析成Map通过key的方式进行获取,然后set到实体类对象中,说到这里我开始想吐了,这样就造成了代码过多,没有可读性,如果有100个值,要get100次,set100次吗?所以最简单的方式是封装成对象,通过对象操

Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】

package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.grap

java 实体对象与Map之间的转换工具类(自己还没看)

java实体对象与Map之间的转换工具类 import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; public class EntityUtils { /** * 实体类转Map * @param object * @return */ public static Map<String, Object> entityToMap(Object object) { Map<String,

Android单位转换 (px、dp、sp之间的转换工具类)

在Android开发中,涉及到屏幕视频问题的时候,px.dp.sp之间的转换比较重要的一部分,所以杨哥整理了一个工具类给大伙用. package com.zw.express.tool; import android.content.Context;import android.util.DisplayMetrics;/** * ydc * @author Administrator * */public class DensityUtils { /**     * 根据手机的分辨率从 dip

JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换工具类(调优)

原文链接:http://blog.csdn.net/qq7342272/article/details/6830907#comments 调试时出现bug,在String中包含list嵌套或map嵌套时会出现字符串下标越界异常,原因是split分割时会出现""字符串,此时引用str.charAt(0)会抛出该异常,如图: 优化代码,经调试暂时解决String中2层嵌套list转换,如下: 1 package test; 2 3 import java.util.ArrayList; 4

Json转换工具类(基于google的Gson和阿里的fastjson)

在项目之中我们经常会涉及到字符串和各种对象的转换,为此特地整理了一下常用的转换方法 一.基于com.google.code.gson封装的json转换工具类 1. 在pom.xml文件里面引入gson的依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.3</version> &

常用的Java字符转换工具类

该类里包含了Java中常用的字符串处理方法,如日期处理.金额转换... ----------------------------------------------------------------------------------------- import java.math.BigDecimal;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Calendar;import jav

分享万能java字符串编码转换工具类

代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm 原文:分享万能java字符串编码转换工具类 package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US.Unicode字符集的基本拉丁块 */ publ

HBaseConvetorUtil 实体转换工具类

HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil { /** * @Title: convetor * @Description: 传入hbase返回结果值,返回实例集合 * @param * @return * @throws */ public static <T> List<T>convetor(Class<T> cla,ResultScanner resultScanner) throws Exce