博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将非常规Json字符串转换为常用的json对象
阅读量:5972 次
发布时间:2019-06-19

本文共 1317 字,大约阅读时间需要 4 分钟。

  如下所示,这是一个已经转换为Json对象的非常规Json字符串,原来是一个Json类型的字符串,在转换为Json对象时,查询资料发现有两种转换法,.parse()和.eval()方法,但是前辈们都极其不推荐使用后者,因为它不会检查Json格式的正确与否,还能将可执行的代码直接执行了,是极其危险的。而前者当数据不符合Json字符串格式时,会报错提示!!详解的可以搜其他大神的笔记查看。 

下面的各个字段没有像我们直接能使用的key-value键值对这样一一对应的json对象。

  各key值意义如下: 

    Count:表示数据有一行; 
    Field:此数组元素为我们所需要的真正key值; 
    Row:数据数组,根据Count值而定,如果Count:n,则有n个Row(即有n行), 
    其中Type是表明数据类型,后面第二个关键字相当于数据类型名,其值为真正的key值所对应的value值。 
  最后解析之后,我们想要的应该是: {channel:1,on_off:1,freq:”1950.0000MHz”,sweep:”10.0000MHz”} 

{     Count:1,    Field:["channel","on_off","freq","sweep"],    Row:[{       VolVal:[         {Type:6,iVal:1},         {Type:7,dwVal:1},         {Type:10,strVal:"1950.0000MHz"},         {Type:10,strVal:"10.0000MHz"}       ]          }]  
 
 

  看到这个的时候还是有点蒙圈的,感觉解析出来还麻烦甚至不知道怎么弄。自己的第一反应就是一点一点直接取出来得什么时候去了,总想着有什么简单而又简便的方法一步到位。然而事实是没有什么捷径,通过这个又get到一点,不要怕麻烦,也不要被这种吓到了,一层一层解析就好。然后,下面的代码则是我尝试解出的过程:

 
 

  我的难点是,不知道怎么将解析出的结果,将key和value都存放到Json数组对象中去??

  上面的代码原意是想每一次循环将key-value都存到新建的obj对象中,最后将对象push进form数组中存储起来。然而却发现得到的结果是: 

    [Object]:即[name:”10.000KHz”] 
  分析原因我们发现: 
这里写图片描述

  因此正确的处理应该是: 

这里写图片描述

  即将obj{}对象定义放到内层循环外,每一行数据则是一个对象,且因为obj的键名是动态生成的,不能用“.”表达式,“.”表达式代表后面所跟的是常量,因此最后出来的会报错。。 

  因此一定要特别注意“.”和“[]”的区别使用法!!

  取出的Json对象数据为: 

这里写图片描述

 

声明:本博文由博主(http://blog.csdn.net/bonjourjw)原创编辑,我经其同意后转载过来供大家交流学习,未经其同意禁止转载!

转载于:https://www.cnblogs.com/zimo-jing/p/7828077.html

你可能感兴趣的文章
[New Portal]Windows Azure Storage (13) 本地冗余存储 vs 地理冗余存储 (下)
查看>>
利用OCR识别扫描的jpg、tif文件的文字
查看>>
POJ 3468 A Simple Problem with Integers (伸展树区间更新求和操作 , 模板)
查看>>
json序列化对象
查看>>
GTD时间管理阅读笔记
查看>>
中间件的调度
查看>>
《ASP.NET AJAX程序设计》图书相关资源总索引
查看>>
SecureCRT 绝佳配色方案, 保护你的眼睛
查看>>
深度学习网络训练技巧汇总
查看>>
ZOJ 2859 Matrix Searching(二维线段树)
查看>>
SQL Server: Datetime,Datetime2
查看>>
艾伟也谈项目管理,如何完成看似不可能完成的任务
查看>>
[转]gtest使用
查看>>
VS操作技巧
查看>>
java 获取当前函数名
查看>>
async & await 的用法
查看>>
RabbitMQ学习2---使用场景
查看>>
mac平台安装类似yum的工具
查看>>
PHP多种序列化/反序列化的方法(serialize和unserialize函数)
查看>>
python开发_difflib字符串比较
查看>>