JSON对象转换成字符串 相互转换 的几种方式

2023-11-04

在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用request进行接收。有时传递了几个数值,还好接收。但是如果传递一个json数组,这样后台接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递。例如下面的例子:

前台按类的格式传递JSON对象:

var jsonUserInfo = “{\”TUserName\”:\”” + userName + “\”,\”TInterest\”:\”” + interest + “\”,\”TSex\”:\”” + sex + “\”,\”TCity\”:\”” + city + “\”,\”TDetail\”:\”” + detail + “\”}”;如拼出的jsonUserInfo 无转义符号,需要var jsonArrayFinal = JSON.stringify(jsonArray);进行转换后再传递

$.ajax(  
                    {  
                        type: "post",  
                        url: "ReceiveHandler1.ashx",  
                        data: { userInfo: jsonUserInfo, flag: "123456", key: "654321" },  
                        dataType: "JSON",  
                        success: function(data) {  
                            $("#divShow").html(data);  
                        }  
 });  

这是简单的传递,如果传递多个数组,前台传递多个类格式的JSON数组,也就是集合类型。后台处理就比较麻烦,例如:
[{“name”:”a”},{“name”,”b”},{“name”,”c”}],则无法传递,此时必须使用JSON.stringify将数组对象转换成字符串,再进行AJAX传递即可。
例如:两个参数变量,一个是字符串,一个是数组。
var a={“name”:”tom”,”sex”:”男”,”age”:”24”};
var b=’{“name”:”Mike”,”sex”:”女”,”age”:”29”}’;
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。
JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;
在转换成一般使用了两种方式,一个是JSON.stringify(obj),转换成字符串,JSON.parse(string)将字符串转为JSON格式,不过一个一个json.js的支持。不过在许多的浏览器现在都支持,可以直接使用。

上面的转换可以这么写:

var a={"name":"tom","sex":"男","age":"24"};   
var b='{"name":"Mike","sex":"女","age":"29"}';   
var aToStr=JSON.stringify(a);   
var bToObj=JSON.parse(b);   
alert(typeof(aToStr));  //string   
alert(typeof(bToObj));//object  
JSON.stringify()  

ie8(兼容模式),ie7和ie6没有JSON对象,不过http://www.json.org/js.html提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。
ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象,
var c=’{“name”:”Mike”,”sex”:”女”,”age”:”29”}’;
var cToObj=eval(“(“+c+”)”);
alert(typeof(cToObj));
jQuery中也有将字符串转为JSON格式的方法jquery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。
这只是一种方法,还有几种方法,大家可以看一下:
1>jQuery插件支持的转换方式:

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

3>javascript支持的转换方式:
eval(‘(’ + jsonstr + ‘)’); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

4>JSON官方的转换方式:
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON对象转换成字符串 相互转换 的几种方式 的相关文章

随机推荐

  • linux下mysql数据库重启,Linux下重启mysql数据库的方法

    方法一 命令 root localhost etc init d mysql start stop restart reload force reload root localhost init d etc init d mysql sta
  • Chisel实验笔记(二)

    在上一篇 Chisel实验笔记 一 中 我们的到了对应的verilog文件 本文将采用Icarus Verilog GtkWave进行仿真验证 实验平台还是Ubuntu14 04 64位 1 安装Icarus Verilog 0 9 7 首
  • python入门基础代码初学

    python入门基础代码初学 一 检查python安装 二 print使用 二 使用python运算 三 enumerate 函数 一 检查python安装 PS C Users admin gt python Python 3 8 8 t
  • 在vue中使用element-ui 里面的按钮点击后显示加载中,防止重复提交

    点击前 点击后
  • .net3.5安装问题

    net3 5安装问题 对于部分软件 需安装 net3 5才能正常运行 微软默认Windows10版本未安装 net3 5 在线安装比较麻烦 可能遇到各种问题 现推荐离线安装方式 1 下载相关文件 从衔接下载文件解压到C盘 如图1 1所示 2
  • python中3∧2_python 中根据python版本(2或3)定义函数

    示意代码如下 coding UTF 8 import time import socket import os import sys if sys version info major 2 reload sys sys setdefault
  • 怎么修改地磅服务器的修改记录,如何手动查看和修改电子地磅数字传感器通讯地址...

    如何手动查看和修改电子地磅数字传感器通讯地址 以地磅数字仪表XK3190 DS10为例 为大家来做介绍 1 电子地磅传感器通讯地址是地磅仪表识别数字传感器的标志 数字传感器的通讯地址就是大家通常所说的 传感器编号 XK3190 DS10 通
  • 华为上机试题8(查找最大递减数)

    题目 给出一个非负整数 找到这个非负整数中包含的最大递减数 一个数字的递减数是指相邻的数位从大到小排列的数字 如 95345323 递减数有 953 95 53 53 532 32 那么最大的递减数为953 如果输入的数字为负数 返回 1
  • Webpack中Loader与Plugin

    前言 Webpack的核心功能是通过抽离出很多插件来实现的 因此系统内功能的划分粒度很细 这样做到了完美解偶同时又分工明确 代码容易维护 所以说插件机制是也是Webpack的核心知识 那么下面我们就来写介绍一下Loader与Plugin 并
  • DVWA-CSRF跨站请求伪造 Medium和Low级别

    1代码分析 过滤条件 if stripos SERVER HTTP REFERER SERVER SERVER NAME false 判断 SERVER SERVER NAME 在 SERVER HTTP REFERER 中是否存在 寻找第
  • 滴滴Chameleon 原生跳转vue界面 

    滴滴Chameleon 原生跳转vue界面 CmlWeexInstance reload url CmlWeexView getInstance reload url
  • 解决win10下localhost打不开的问题

    转自 https blog csdn net wk6333 article details 50678420 打开控制面板 添加或删除程序 然后但左侧栏的 启用或关闭Windows功能 把 Internet Information Serv
  • vue文件下载

    1 创建下载按钮
  • pidstat命令详解

    一 命令介绍 pidstat是sysstat工具中的一个命令 用于监控进程的cpu 内存 线程 IO及上下文切换等系统资源的占用情况 格式 pidstat options
  • SpringCloud-注册中心简单了解与使用

    前言 什么是SpringCloud 什么是微服务 能干什么 为什么要用SpringCloud 注册中心 什么是SpringCloud 大家都知道SpringCloud是一种微服务架构 模式 SpringCloud简单来说就是微服务架构技术落
  • ArrayList非线程安全记录

    一 问题描述 线上一个查询服务 偶尔会报一次查询出来的结果集合包含null 二 问题排查 在多线程查询过程中 使用了ArrayList 多线程查询出来后执行ArrayList add 然而ArrayList并不是线程安全的集合 会导致nul
  • linux红帽8怎么安yum,RedHat Linux 8本地Yum源配置方法

    1 挂载系统光盘到 mnt cdrom目录 mkdir p mnt cdrom mount dev sr0 mnt cdrom 2 设置系统启动后将光盘自动挂载到 mnt cdrom echo dev sr0 mnt cdrom iso96
  • 电商数据分析实战第一篇——客户消费行为分析

    一 分析背景 为了提高店铺的收益 进行准确的客户运营策略 使用店铺201910至202002的销售数据进行分析 根据客户的消费趋势 消费习惯把握客户的消费现状和心理 挖掘出高价值用户群体 完善销售运营策略 简单说明一下 客户分析包括基本属性
  • Upload LABS Pass-8

    第八关在后端使用了黑名单 并过滤了大小写 点以及空格 但并未过滤数据流 我们使用代理拦截请求 在文件后缀名中添加数据流 绕过黑名单 准备一个 8 php 文件 内容为一句话木马 上传 8 php 文件 并使用代理 此处使用 Burp Sui
  • JSON对象转换成字符串 相互转换 的几种方式

    在最近的工作中 使用到JSON进行数据的传递 特别是从前端传递到后台 前台可以直接采用ajax的data函数 按json格式传递 后台Request即可 但有的时候 需要传递多个参数 后台使用request进行接收 有时传递了几个数值 还好