|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2022/7/16 13:57:01 |
标题: |
|
加入我的收藏 |
楼主: |
使用一个老外的数据集和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数组字符串标准化、格式化?
----------------------------------------------
- |
作者: |
|
2022/7/16 14:25:36 |
1楼: |
delphi 的才是标准的, 默认是不带换行的json. 跟base64是一样的.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2022/7/16 14:36:59 |
2楼: |
回车换行不影响JSON解析
----------------------------------------------
-
|
作者: |
|
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 吃饭,怕甚?
|
作者: |
|
2022/7/16 18:02:22 |
4楼: |
确实,解析不正确是delphi生成的json汉字编码有问题,同时保存的文本文件不是而utf8的,处理好后dataset就能从json里装入数据了。
----------------------------------------------
-
|
作者: |
|
2022/7/16 19:36:02 |
5楼: |
你这种带汉字的JSON都是非标准JSON,标准JSON换不换行都没关系。 但是汉字都是 \uXXXX这种编码方式。 国内很多API为了方便查看,就瞎搞,直接用汉字。如果对方编码不同就无法解析或者查看 了
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2022/7/17 7:39:26 |
6楼: |
@ wr960204 (武稀松) 武稀松大哥, \uxx 是unicode码, 某些编程语言旧版本是不支持unicode的, 所以明文中文, 比如php, js到目前好像还是明文, 不过它也支持unicode
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2022/7/17 7:54:11 |
7楼: |
如果不处理,delphi生成的json串汉字都是这种\xxx\xxx这种转义符号,这种转义符号在utf8里会显示为?
----------------------------------------------
-
|
作者: |
|
2022/7/21 0:08:05 |
9楼: |
@tuesdays 你以为你看到有中文就是对的,其实都是非标准。 JSON规范规定的字符串就是UNICODE编码。 前面我也说了,凡是出现中文的都是瞎搞的,或者叫String而不是JSON
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
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
|
|