Json fastjson及相关前后端联调整理

Json是一种轻量级的数据交换格式,采用一种key-value对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。

为什么要用json?
1.数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小,其可读性也不错,基本具备了结构化数据的性质。

2.易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的解析,通过遍历数组以及访问对象属性来获取数据,

3.因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 且易于维护,语言无关,任何语言都能轻松搞它,类型安全,值是有类型的,比如整数、字符串、布尔等。

JSON对象

{
	"ID": 1001,
	"name": "张三",
	"age": 24
}

JSON对象数组

[
	{"ID": 1001, "name": "张三", "age": 24},
	{"ID": 1002, "name": "李四", "age": 25},
	{"ID": 1003, "name": "王五", "age": 22}
]

example

{
	"部门名称":"研发部",
	"部门成员":[
	{"ID": 1001, "name": "张三", "age": 24},
	{"ID": 1002, "name": "李四", "age": 25},
	{"ID": 1003, "name": "王五", "age": 22}],
	"部门位置":"我家"
}

易错点:最后一行不要多加逗号
JSONArray.fromObject(list)等可以返回JSONArray对象

fastjson

FastJson是用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分。
可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

包含
(1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
(2)JSONObject:fastJson提供的json对象。
(3)JSONArray:fastJson提供json数组对象。

示例

public class Person {
    public int age;
    public String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Person() {
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.zpx.pojo.Person;

import java.util.List;

public class testFastjson {
    public static void main(String[] args) {
        //封装成json(对象--》json字符串)
        Person zpx = new Person(5, "SSS");
        String s = JSON.toJSONString(zpx);
        System.out.println(s);
        //取出,json字符串转json对象
        JSONObject jsonObject = JSON.parseObject(s);
        Integer age = jsonObject.getInteger("age");//取到json对象中的key对应value
        System.out.println(age);
           //指定返回jsonobject的对象
        Person person = JSON.parseObject(s, Person.class);

        //复杂json
        String str ="{\"meta\":{\"code\":\"0\",\"message\":\"同步成功!\"},\"data\":{\"orderno\":\"U_2018062790915774\",\"suborderno\":\"SUB_2018062797348039\",\"type\":\"organunit\",\"result\":{\"organunit\":{\"totalCount\":2,\"successCount\":0,\"failCount\":2,\"errors\":[{\"code\":\"UUM70004\",\"message\":\"组织单元名称不能为空\",\"data\":{\"id\":\"254\",\"suborderNo\":\"SUB_2018062797348039\",\"organUnitType\":\"部门\",\"action\":\"add\",\"parent\":\"10000\",\"ordinal\":0,\"organUnitFullName\":\"组织单元全称\"},\"success\":false},{\"code\":\"UUM70004\",\"message\":\"组织单元名称不能为空\",\"data\":{\"id\":\"255\",\"suborderNo\":\"SUB_2018062797348039\",\"organUnitType\":\"部门\",\"action\":\"add\",\"parent\":\"10000\",\"ordinal\":0,\"organUnitFullName\":\"组织单元全称\"},\"success\":false}]},\"role\":{\"totalCount\":0,\"successCount\":0,\"failCount\":0,\"errors\":[]},\"user\":{\"totalCount\":0,\"successCount\":0,\"failCount\":0,\"errors\":[]}}}}";
        JSONObject jsonObject2 = JSON.parseObject(str);
        JSONObject data = jsonObject2.getJSONObject("data");//两次getJsonObject
        JSONObject result = data.getJSONObject("result");//到result这个jsonObject下

        String organunit1 = result.getString("organunit");
        System.out.println(organunit1);
        JSONObject organunit = result.getJSONObject("organunit");//到organunit这个jsonObject下

        JSONArray errors2 = organunit.getJSONArray("errors");//拿到对应json数组
        
		
        List<Error> error = JSON.parseObject(errors2.toJSONString(), new TypeReference<List<Error>>() {
        });
		 String s1 = JSONObject.toJSONString(errors2);//jsonarray--》json字符串
        List<Error>  errors = JSONObject.parseArray(s1, Error.class);//把此字符串转换成集合
       
    }
}

前端接收后台所发(异步)

$  .ajax({
                        url : "myfileAction",
                        dataType : "json",
                        type : "post",
                        success : function(data) {
                        }
                        });

(data)json字符串-》json对象

var obj = eval('(' + data + ')');
或者 var obj = JSON.parse(data); //更安全 

拿到obj(对应json对象),该怎么渲染怎么渲染

前端发给后端json

<script type="text/javascript">  
    $(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"zhangsan","address":"bj"};  
        var data2={"userName":"lisi","address":"nj"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);         
        $.ajax({ 
            type:"POST", 
            url:"user/saveUser", 
            dataType:"json",      
            contentType:"application/json",               
            data:JSON.stringify(saveData), 
            success:function(data){ 
 
            } 
         }); 
    });  
</script>

可以通过JQuery的$.each()方法遍历输出

var arr = [{ name: "john", lang: "js" },{ name: "张三", lang: "ext" }];   
  $.each( arr, function(index, content)  
  {   
   alert( "the man's no. is: " + index + ",and " + content.name + " is learning " + content.lang );   
  });  
  //for遍历
    for(var i=0; i<arr.length; i++)  
  {  
     alert(arr[i].name+" " + arr[i].value)  
  }  
  //取arr数组里一个叫name的值,比如上面name后面值是张三,就取出张三

对于JSON对象《—》JSON字符串转换直接用 toJSONString()这个方法。
javaBean与JSON格式字符串转换用:JSON.toJSONString(obj);
javaBean与json对象间的转换用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
list转json对象使用FastJSON可以通过以下步骤完成: 1. 导入FastJSON库并创建一个空的JSON对象。 2. 遍历list,将list中的每个元素转换为JSON对象。 3. 将转换后的JSON对象添加到前面创建的空JSON对象中。 4. 最后将整个JSON对象转换为json字符串。 代码示例: import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = List.of("item1", "item2", "item3"); JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); for (String item : list) { JSONObject itemObject = new JSONObject(); itemObject.put("item", item); jsonArray.add(itemObject); } jsonObject.put("list", jsonArray); String jsonString = jsonObject.toJSONString(); System.out.println(jsonString); } } 以上代码将会将List<String> list转换为一个JSON对象,该对象中包含一个名为"list"的JSON数组,该数组包含了list中的每个元素的JSON对象。 希望以上解答能对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [list转json字符串 FastJSON 调用](https://download.csdn.net/download/trouble0914/85414476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [fastjson list转json字符串_一篇文章教你轻松使用fastjson](https://blog.csdn.net/weixin_39804329/article/details/110245434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值