首页 > 编程知识 正文

javabean转json的方法,java对象转json

时间:2023-12-27 22:26:36 阅读:324604 作者:XZTB

本文目录一览:

android怎么将javabean转换成json

前提条件是javaBean必须有getter和setter方法而且,必须有无参的构造方法

package com.cn.parse_json;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.lang.reflect.Field;

import org.json.JSONObject;

import android.os.Environment;

import android.util.Log;

import android.widget.Toast;

public class ParseJson2BeanUtils {

public static T T parseJson2Bean(JSONObject object,ClassT clazz ) throws Exception{

FileInputStream fis = new FileInputStream("/mnt/sdcard/json.txt");

int len = fis.available();

byte[] buffer = new byte[len];

fis.read(buffer);

object = new JSONObject(new String(buffer));

T newInstance = null;

Field[] fields = clazz.getFields();

//只要保证clazz有一个无参的public构造方法就不可能发生异常

try {

newInstance = clazz.newInstance();

} catch (Exception e) {

e.printStackTrace();

}

for(int i = 0;i fields.length;i++){

String name = fields[i].getName();

//不可能发生的异常

try {

String jsonName = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());

if(object.has(jsonName)){

if(jsonName.equals("ResultCode")){

fields[i].set(newInstance, object.getInt(jsonName));

}else{

fields[i].set(newInstance, object.getString(jsonName));

}

Log.i("name", name+"****");

}

//Log.i("name", jsonName+":"+object.has(jsonName)+object.getString(jsonName));

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return newInstance;

}

}

java中一个包含bean属性的list集合 如何转换成JSON

java中的list是数组的变形,换句话说,list就是可变换长度的数组。因此java中的list转换成JSON后就成了JSON中的数组;

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

java中将一个java对象转换成一个json,如果要去实现的话,比较麻烦,当下有很多java对象与json字符串之间转换的工具,例如google的开源工具Gson(jar包),通过它就可以直接将java对象作为入参传进去,返回一个json字符串。

带有对象属性的bean,如何转换成json对象或者字符串

fastjson转化如下:

public class Userinfo {

private String username;

private String password;

private Address address;

//省略相应的get/set方法

}

//json转化单个对象

Userinfo userinfo = JSON.parseObject(jsonString, Userinfo.class);

//json转化为多个对象

ListUserinfo list = JSON.parseArray(jsonString, Userinfo.class);

对象转化为JSON

JSON json = JSON.toJSON(userinfo);

FastJson和Json以及@ResponseBody

@Restcontroller是@Controller和@ResponseBody的结合体,将后台返回的Java对象转换为Json字符串传递给前台。它是springmvc通过配置MappingJackson2HttpMessageConverter实现的,spring默认带的转json包为jackson,因为fastJson比较快一般会引入fastjson来替换。

解决bean与json字段不一致问题,或者字段定义不符合前端所需要的标准,需要使用@JsonProperty和@JSONField注解。

@jsonProperty是Jackson的包,@JSONproperty这个注解用于属性上面

而@jsonfield是fastjson的包,@JSONField这个注解可以用于get、set以及属性上面@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")是时间的格式化,可以用于get、set以及属性上面

FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。FastJson的API十分简洁,FastJson重要的类为JSONObject,经常调用的方法如下:

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray

public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject

public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean

public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray

public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本

public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

Jackson相对来说比较高效的Json类库,在项目中主要使用Jackson进行JSON和Java对象转换,Jackson ObjectMapper类是使用Jackson解析JSON最简单的方法。可以从字符串、流或文件解析JSON,并创建Java对象或对象图来表示已解析的JSON。将JSON解析为Java对象也称为从JSON反序列化Java对象

1.JAVA对象转JSON

ObjectMapper mapper = new ObjectMapper();

String bjectMapper = mapper.writeValueAsString(obj);

2.JSON转Java类[JSON反序列化]

ObjectMapper mapper = new ObjectMapper();

HashMapString, Object inMap = mapper.readValue(jsonStr, HashMap.class);

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。