如何将数据实体转换为 JSON 字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数据实体转换为 JSON 字符串相关的知识,希望对你有一定的参考价值。

将数据实体转换为 JSON 字符串的方法:

先将java对象转换为json对象,在将json对象转换为json字符串
JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象

String str = json.toString();//将json对象转换为字符串
参考代码如下:

package baz.parse;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import baz.bean.Person;

public class ParseJson

private String jsonStr;

public ParseJson()



public ParseJson(String str)
this.jsonStr = str;

/**
* 解析json字符串
*/
public void parse()
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
String name = jsonObject.getString("name");
int num = jsonObject.getInt("num");
String sex = jsonObject.getString("sex");
int age = jsonObject.getInt("age");

System.out.println(name + " " + num + " " + sex + " " + age);

//将json字符串转换为java对象
public Person JSON2Object()
//接收对象,此处接收数组对象会有异常
if(jsonStr.indexOf("[") != -1)
jsonStr = jsonStr.replace("[", "");

if(jsonStr.indexOf("]") != -1)
jsonStr = jsonStr.replace("]", "");

JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象
return jb;//返回一个Person对象


参考技术A <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<HTML>  
<HEAD>  
<TITLE> New Document </TITLE>  
  
<SCRIPT LANGUAGE="javascript">  

var
 t="'firstName': 'cyra', 'lastName': 'richardson', 'address':  
'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 
'postalCode': 98052 ,'phoneNumbers': [ '425-777-7777','206-777-7777' ] 
";  
    var jsonobj=eval('('+t+')');  
    alert(jsonobj.firstName);  
    alert(jsonobj.lastName);  

var t2="[name:'zhangsan',age:'24',name:'lisi',age:'30',name:'wangwu',age:'16',name:'tianqi',age:'7'] ";  
var myobj=eval(t2);  
for(var i=0;i<myobj.length;i++)  
   alert(myobj[i].name);  
   alert(myobj[i].age);  
  
  
var
 t3="[['<a href=# 
onclick=openLink(14113295100,社旗县国税局桥头税务
所,14113295100,d6d223892dc94f5bb501d4408a68333d,swjg_dm);>14113295100</a>','
社旗县国税局桥头税务所','社旗县城郊乡长江路西段']]";  
//通过eval() 函数可以将JSON字符串转化为对象  
var obj = eval(t3);  
for(var i=0;i<obj.length;i++)  
   for(var j=0;j<obj[i].length;j++)  
alert(obj[i][j]);  
     
  
  
  
/*  
//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。  
var jsonText = JSON.stringify(obj);  
alert(jsonText);  
  
//如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。  
var myObject = JSON.parse(myJSONtext, filter);    
//可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如:  
//如  
myData = JSON.parse(text, function (key, value)          
  
return key.indexOf('date') >= 0 ? new Date(value) : value;    );  
  
//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。  
var myJSONText = JSON.stringifier(myObject);  
*/  
</SCRIPT>  
</HEAD>  
  
<BODY>  
  
</BODY>  
</HTML>

示例

参考技术B C#有个很好用的第三方程序集叫Json.Net,最简单的序列化方法:string json = JsonConvert.SerializeObject(要序列化的对象);

jackJson

JackJson

jackJson

将javaBean对象转换为json字符串

1、先创建一个jackJson的核心对象 ObjectMapper以及实体类对象

ObjectMapper om=new ObjectMapper();	
User user=new User("才春磊",20,"1020308280@qq.com");

2、把实体类转换成json格式的字符串

try 
            String userstr = om.writeValueAsString(user);
            System.out.println(userstr);
         catch (IOException e) 
            e.printStackTrace();
        
/*
打印结果
"name":"才春磊","age":20,"email":"1020308280@qq.com"
*/

通过ObjectMapper中的writeValueAsString()方法将实体类的对象转换成了Json字符串

将json字符串写入文件

try 
            om.writeValue(new File("D:\\\\json.txt"),user);
         catch (IOException e) 
            e.printStackTrace();
        

通过ObjectMapper中的writeValue()方法将实体类转换的Json字符串写入文件中

注解:

@JsonIgnore    写在实体类中,表示在将对象转换为Json字符串的时候忽略这个属性	
@JsonFormat(pattern = "yyyy-MM-dd")     写在实体类中,表示将实体类对象转换为Json字符串的时候,日期类属性,以什么形式转换为Json字符串

将json字符串转换成实体类对象

public static void main(String[] args) 
    //把Json格式的字符串转换成指定的实体类对象
    //创建jackJson的核心类ObjectMapper
    ObjectMapper om =new ObjectMapper();
    //创建User实体类对象
    User user=new User("才春磊",20,"asdf");
    try 
    	//将实体类对象转换成Json字符串
        String userStr = om.writeValueAsString(user);
        System.out.println(userStr);
        //将User类转换过来的Json字符串转回Json对象
        //User.class反射的方法
        User user1 = om.readValue(userStr, User.class);
        System.out.println(user);
     catch (IOException e) 
        e.printStackTrace();
    

/*
运行结果
"name":"才春磊","age":20,"email":"asdf"
Username='才春磊', age=20, email='asdf'
*/

将List转换为json字符串

public static void main(String[] args) 
        ObjectMapper om =new ObjectMapper();
        User user=new User("才春磊",20,"aaaa");
        User user2=new User("才春磊1",21,"bbbb");
        User user3=new User("才春磊2",22,"cccc");
        List<User> list=new ArrayList<User>();
        list.add(user);
        list.add(user2);
        list.add(user3);
        //把list集合转换成json字符串
        try 
            String listStr = om.writeValueAsString(list);
            System.out.println(listStr);
         catch (IOException e) 
            e.printStackTrace();
        
    
/*
运行结果为
["name":"才春磊","age":20,"email":"aaaa",
"name":"才春磊1","age":21,"email":"bbbb",
"name":"才春磊2","age":22,"email":"cccc"]
*/

将Map转换为json字符串

public static void main(String[] args) 
        ObjectMapper om=new ObjectMapper();
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("name","才春磊");
        map.put("sex","男");
        map.put("age",20);
        try 
            String jsonMap = om.writeValueAsString(map);
            System.out.println(jsonMap);
         catch (IOException e) 
            e.printStackTrace();
        
    
/*
运行结果
"sex":"男","name":"才春磊","age":20
*/

以上是关于如何将数据实体转换为 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章

从核心数据创建 json 字符串,反之亦然?

查询Mysql表之后将结果转换为json时如何能够保持字段的原有数据类型?

java将JSON字符串转换为实体类对象,基于net sf json实现

将 Json 反序列化为实体框架无法将 int 转换为类型

jackJson

jackJson