DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 10
在线用户: 25
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/7/16 13:57:01
标题:
请教关于json字符串数据的处理 浏览:1601
加入我的收藏
楼主: 使用一个老外的数据集和json互转的方法DataSet.Serialize,在lazarus可以生成标准json字符串数组,但在delphi里生成的字符串没有换行,导致从json数组字符串转换为数据集时错误。
laza生成的标准json数组字符串:
[
  {
     "xm":"张三",
      "nl":30,
      "gl":"湖南"
  },
 {
    "xm":"李四",
     "nl":32,
     "gl":"江西"
  },
  {
     "xm":"王五",
     "nl":28,
     "gl":
     "广西"
   }
]
delphi生成的json数组字符串:
[{"xm":"张三","nl":30,"gl":"湖南"},{"xm":"李四","nl":32,"gl":"江西"},{"xm":"王五","nl":28,"gl":"广西"}]
怎样在delphi把delphi生成的json数组字符串标准化、格式化?
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2022/7/16 14:25:36
1楼: delphi 的才是标准的, 默认是不带换行的json. 跟base64是一样的.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 redhan (晓寒) ★☆☆☆☆ -
盒子活跃会员
2022/7/16 14:36:59
2楼: 回车换行不影响JSON解析
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2022/7/16 17:40:43
3楼: 换不换行和解析错误毫无关系.
我举个栗子:
QQ音乐/酷我/酷狗/咪咕/等等接口api返回的json都是不换行的。
点开下面的链接看看?

http://msearchcdn.kugou.com/api/v3/search/song?showtype=14&highlight=em&pagesize=30&tag_aggr=1&tagtype=%E5%85%A8%E9%83%A8&plat=0&sver=5&keyword=%E4%BD%A0%E5%A5%BD&correct=1&api_ver=1&version=9108&page=1&area_code=1&tag=1&with_res_tag=1
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/7/16 18:02:22
4楼: 确实,解析不正确是delphi生成的json汉字编码有问题,同时保存的文本文件不是而utf8的,处理好后dataset就能从json里装入数据了。
----------------------------------------------
-
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2022/7/16 19:36:02
5楼: 你这种带汉字的JSON都是非标准JSON,标准JSON换不换行都没关系。
但是汉字都是 \uXXXX这种编码方式。
国内很多API为了方便查看,就瞎搞,直接用汉字。如果对方编码不同就无法解析或者查看 了
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2022/7/17 7:39:26
6楼: @ wr960204 (武稀松)
武稀松大哥, \uxx 是unicode码, 某些编程语言旧版本是不支持unicode的, 所以明文中文,  比如php, js到目前好像还是明文, 不过它也支持unicode
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/7/17 7:54:11
7楼: 如果不处理,delphi生成的json串汉字都是这种\xxx\xxx这种转义符号,这种转义符号在utf8里会显示为?
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2022/7/17 11:41:04
8楼: 支持不支持,查一下标准嘛,比如:https://www.rfc-editor.org/rfc/rfc4627.txt
参考网站:http://www.json.org.cn/standard.htm
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2022/7/21 0:08:05
9楼: @tuesdays 
你以为你看到有中文就是对的,其实都是非标准。
JSON规范规定的字符串就是UNICODE编码。
前面我也说了,凡是出现中文的都是瞎搞的,或者叫String而不是JSON
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 zhyhero (zhyhero) ★☆☆☆☆ -
盒子活跃会员
2022/7/21 2:35:28
10楼: 我这些天在做一些Json翻来翻去的测试,
步骤1.  delphi把对象(TObject)转换成Json string,然后传给js,
      (delphi)  str:=TJson.ObjectToJsonstr(aObject);
步骤2.  在js中通过JSON.parse()转换成js的Json对象,
      (js)  var jo=JSON.parse(步骤1传过来的str);
步骤3.  加工以后,再通过JSON.stringify()处理传回delphi
      (js)  var jostr=JSON.stringify(jo);

          //传回delphi
          ajaxRequest(delphi,'test',['data='+jostr]) 
          或 ajaxRequest(delphi,'test',['data='+jo]) 
         
结果发现
步骤1得到的结果中汉字是Unicode编码的,即\uXXXX形式的
步骤2中立即console.log(步骤1传过来的str)会是明文汉字
步骤3得到的结果中汉字就是明文的汉字,和网上很多文章说的汉字会被转换成\uXXXX不一样.
js是在浏览器中执行的,例如edge.

这有什么说法?浏览器自动译码了?
----------------------------------------------
z@S7
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS