js——json对象相互转化——js基础积累

js——json对象相互转化——js基础积累

  • 需求场景
  • 解决步骤1:定义一个变量接收此字段,方便处理
  • 解决步骤2: { 外面的双引号要去掉
  • 解决步骤3:使用正则去除参数中的\\
  • 解决步骤4:如果此参数必须以{开头,以}结尾
  • 解决步骤5:通过JSON.parse转化为对象
  • 完整代码

需求场景

昨天遇到一个需求,就是要将下面格式的内容,转化为相应格式的数据

let obj = {"Action":"http://xxxx/service/addsaleoutbill","Method":"post","RequestContent":"\"{\\\"vbillcode\\\":\\\"222\\\",\\\"dbilldate\\\":\\\"2023-12-22\\\",\\\"caccountperiod\\\":\\\"2023-12\\\",\\\"cstockorgid\\\":\\\"电子有限公司\\\",\\\"cstordocid\\\":\\\"仓-安徽\\\",\\\"cstordocmanid\\\":\\\"1212\\\",\\\"cdeptid\\\":\\\"元-安徽\\\",\\\"bwithdrawalflag\\\":\\\"N\\\",\\\"billmaker\\\":\\\"1212\\\",\\\"custmor\\\":\\\"互联网有限公司\\\",\\\"vnote\\\":\\\"446085-3968\\\",\\\"detail\\\":[{\\\"cinventorycode\\\":\\\"J555\\\",\\\"nnum\\\":\\\"100\\\",\\\"nprice\\\":\\\"0.010000\\\",\\\"taxrate\\\":null,\\\"taxpaid\\\":null,\\\"nmny\\\":\\\"1.000000\\\",\\\"dbizdate\\\":\\\"2023-12-22\\\"},{\\\"cinventorycode\\\":\\\"J544\\\",\\\"nnum\\\":\\\"100\\\",\\\"nprice\\\":\\\"0.010000\\\",\\\"taxrate\\\":null,\\\"taxpaid\\\":null,\\\"nmny\\\":\\\"1.000000\\\",\\\"dbizdate\\\":\\\"2023-12-22\\\"}]}\"","RequestHeaders":{},"ContentType":"application/json"}

通过控制台展示,可以看到这段代码就是一个对象
在这里插入图片描述
上述对象中有个RequestContent参数,这个参数也是一个转义后的数据

在这里插入图片描述
现在要做的就是把obj.RequestContent转成一个对象。

解决步骤1:定义一个变量接收此字段,方便处理

在这里插入图片描述

解决步骤2: { 外面的双引号要去掉

在这里插入图片描述
一定要注意:从控制台上看,开头是单引号,然后才是双引号,但是实际上此参数就是双引号开头的,外层的单引号是字符串类型的标识,并不是参数的内容。
这点很重要,因为这个问题,导致我卡住了很久。。。。

解决步骤3:使用正则去除参数中的\

在这里插入图片描述

解决步骤4:如果此参数必须以{开头,以}结尾

在这里插入图片描述
这样写不太好,万一该参数内部还有其他的对象,则此判断错误了就。

所以解决方法就是:取参数的第一项判断是否是{即可。

if(requestCon[0]!='{'){requestCon = "{" + requestCon + "}";
}

解决步骤5:通过JSON.parse转化为对象

在这里插入图片描述

注意:我们进行上述步骤的转化,就是为了能够拿到一个以{开头并以}结尾的JSON格式的数据,才能够经过JSON.parse()进行转化为对象。

下面将所有步骤汇总:

完整代码

let obj = {"Action":"http://xxxx/service/addsaleoutbill","Method":"post","RequestContent":"\"{\\\"vbillcode\\\":\\\"222\\\",\\\"dbilldate\\\":\\\"2023-12-22\\\",\\\"caccountperiod\\\":\\\"2023-12\\\",\\\"cstockorgid\\\":\\\"电子有限公司\\\",\\\"cstordocid\\\":\\\"仓-安徽\\\",\\\"cstordocmanid\\\":\\\"1212\\\",\\\"cdeptid\\\":\\\"元-安徽\\\",\\\"bwithdrawalflag\\\":\\\"N\\\",\\\"billmaker\\\":\\\"1212\\\",\\\"custmor\\\":\\\"互联网有限公司\\\",\\\"vnote\\\":\\\"446085-3968\\\",\\\"detail\\\":[{\\\"cinventorycode\\\":\\\"J555\\\",\\\"nnum\\\":\\\"100\\\",\\\"nprice\\\":\\\"0.010000\\\",\\\"taxrate\\\":null,\\\"taxpaid\\\":null,\\\"nmny\\\":\\\"1.000000\\\",\\\"dbizdate\\\":\\\"2023-12-22\\\"},{\\\"cinventorycode\\\":\\\"J544\\\",\\\"nnum\\\":\\\"100\\\",\\\"nprice\\\":\\\"0.010000\\\",\\\"taxrate\\\":null,\\\"taxpaid\\\":null,\\\"nmny\\\":\\\"1.000000\\\",\\\"dbizdate\\\":\\\"2023-12-22\\\"}]}\"","RequestHeaders":{},"ContentType":"application/json"}
let requestCon = obj.RequestContent;
if (requestCon.indexOf('"') == 0) {requestCon = requestCon.substr(1, requestCon.length);requestCon = requestCon.substr(0, requestCon.length - 1);
}
requestCon = requestCon.replace(/\\/g, "");
console.log('转化前', requestCon);
if (requestCon[0]!="{") {requestCon = "{" + requestCon + "}";
}
console.log('转化后', requestCon,JSON.parse(requestCon));
let splitForm = JSON.parse(requestCon);
//此处的splitForm就是我们想要的对象了

完成!!!多多积累,多多收获!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文快速了解超声功率放大器基础知识

超声功率放大器是一种电子设备,用于放大超声信号的能量。它在多个领域中发挥重要作用,包括医疗、工业、科学研究等。超声功率放大器通过将输入信号的能量放大到所需的级别,以便更好地驱动其他设备或实现特定的应用。下面就给大家介绍一下超声…

C++ 多态向上转型详解

文章目录 1 . 前言2 . 多态3 . 向上转型4 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 此篇博文详解C的多态向上转型平台 : Qt 2 . 多态 【Q】什么是多态? 【A】解释如下 : 通俗来说,就是多种形态,具体…

计算机创新协会冬令营——暴力枚举题目03

经过昨天两道题目的洗礼今天应该是更加的手到擒来吧。接招! 题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) …

2024,这将是量子计算的真正挑战

2023年,一项项量子计算纪录被打破。 谷歌量子AI团队证明了将多个量子比特分组合成为一个逻辑量子比特的纠错方法可以提供更低的容错率。以往的纠错研究随着比特数的增加,错误率会提高,都是“越纠越错”,而这次谷歌首次实现了“越纠…

Python Pillow(PIL)库的用法介绍

在Python编程中,图像处理是一个非常重要的应用领域。Pillow(Python Imaging Library,也被称为PIL)是一个强大的库,用于处理图像,包括图像的读取、编辑、保存等操作。本文将详细介绍Pillow库的用法。 一、安…

2024.1.3C语言补录 宏函数

在C语言中,宏函数可以使用预处理器指令 #define 来定义。宏函数与常规函数类似,但它们在预处理阶段进行替换,而不是在运行时。 定义:#define 宏名称(参数列表) 宏体 其中: #define 是预处理器指令,用于定义宏。宏名…

Python入门-实战练习-基于函数

1.编写函数 实现计算列表中元素的最大值 需求: 随机产生10个元素,存储到列表中,编写函数获取这个列表中元素的最大值 (不能使用内置函数 max()) def get_max(lst):xlst[0] # x存储的是元素的最大值# 遍历for i in range(1,len(lst)):if ls…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件,Maven-Reload pr…

Go语言中的乐观锁与悲观锁

改变一个数值的三个步骤 把想修改的数值从某个地方取出来将取出来的数值修改为期望值把修改后的数值保存到原来的地方 问题 如果在做第2步时,有另一个过程(进程或线程)对同一个数值进行同样的操作(取值、修改)&…

grep笔记240103

常用选项:: -i:忽略大小写进行匹配。 -v:反向匹配,只打印不匹配的行。 -n:显示匹配行的行号。 -r:递归查找子目录中的文件。 -l:只打印匹配的文件名。 -c:只打印匹配的行…

11-2 RHEL8配置YUM软件仓库及安装拼音输入法

配置本地YUM源 一、虚拟机关机>>虚拟机设置>>CD/DVD,关联ISO镜像文件,勾选“启动时连接”,点确定 二、开启虚拟机, 使用root用户登录。用df -h 命令可以看到光驱已经正常连接了。如果看不到/dev/sr0,需…

探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Unity 关于点击不同物品移动并触发不同事件

关于点击不同物品触发不同事件 可以实现在界面中点击不同的物体,移动到物品附近位置,然后触发对应的事件。 首先建立一个公共管理的类: public class InteractionObject : MonoBehaviour {private NavMeshAgent PlayerAgent;private bool …

铁塔基站数字化管理监测解决方案

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

vue +WebSDK_V3.3.0/本地调试和打包成dist部署还有所不同!!

1.在index.html中引入js文件 <!-- 实时对讲 --><script src"./static/js/jquery-1.7.1.min.js"></script><script src"./static/js/jsVideoPlugin-1.0.0.min.js"></script><script id"videonode" src"./s…

Object-c初步学习 四

1.category的用法 不修改对象源文件的方式下&#xff0c;给类添加方法 为Student类添加方法 // // NSObjectStudyCategory.h // #import <Foundation/Foundation.h> #import "Student.h" #pragma mark 类名后面的&#xff08;test&#xff09;代表Category…

CCF录用率怎么看?如何挑选合适的会议

写在前面 写此文是因为有同学问我如何确定自己能投稿的会议。首先&#xff0c;不建议直接用他人汇总好的数据&#xff08;截稿时间和录用率&#xff09;&#xff0c;如果遇到更新不及时的很有可能耽误自己的工作。 平常&#xff0c;我都会自己收集预计投稿时间的会议信息&…

6张思维导图,js基础(基本概念,操作符,语句,Date,函数,数组,字符串)

一&#xff0c;js基本概念 二 &#xff0c;js操作符 三&#xff0c;js基本语句 四&#xff0c;Date 常基本用方法汇总 五&#xff0c;数组基本及常用方法汇总 六&#xff0c;字符串基本及常用方法汇总 满满的都是干货。 附送250套精选项目源码 源码截图 源码获取&#xff1a;…

Ansible、Saltstack、Puppet自动化运维工具介绍

本文主要是分享介绍三款主流批量操控工具Ansible、Saltstack、Puppet主要对比区别&#xff0c;以及Ansible和saltstack的基础安装和使用示例&#xff0c;如果觉得本文对你有帮助&#xff0c;欢迎点赞、收藏、评论&#xff01; There are many things that can not be broken&am…

【Java干货教程】Stream流详解

一、Stream流的简介 1.1、Stream流的概述 Stream是Java 8 API添加的一个新的抽象&#xff0c;称为流Stream&#xff0c;以一种声明性方式处理数据集合&#xff08;侧重对于源数据计算能力的封装&#xff0c;并且支持序列与并行两种操作方式。 Stream流是从支持数据处理操作的…