V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bertonzh  ›  全部回复第 4 页 / 共 13 页
回复总数  246
1  2  3  4  5  6  7  8  9  10 ... 13  
2022-11-07 11:13:49 +08:00
回复了 Jobing 创建的主题 程序员 当你解析 JSON 时, Number 类型双精度丢失可以尝试使用 json-bn
@wxf666 试试这样呢?

```
function parseJson(json) {
  let nums = [];
  return JSON.parse(json.replace(/"(?:\\?.)*?"|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g, m =>
   m[0] === '"' ? m : nums.push(/[.eE]/.test(m) || Number.isSafeInteger(+m) ? +m : BigInt(m)) - 1
 ), (key, val) => typeof val === 'number' ? nums[val] : val);
}
```
2022-11-07 11:08:56 +08:00
回复了 Jobing 创建的主题 程序员 当你解析 JSON 时, Number 类型双精度丢失可以尝试使用 json-bn
@wxf666 原来是把数组序号替换进去了啊,可以可以
2022-11-06 21:55:18 +08:00
回复了 Jobing 创建的主题 程序员 当你解析 JSON 时, Number 类型双精度丢失可以尝试使用 json-bn
@wxf666 你这个办法可不行,JS 遍历对象 key 的顺序并不是按照字面量 key 顺序来的,所以你无法通过数组按顺序记录整数。
另外,性能也不一定快,因为你做了三步:分词 + JSON.parse + 遍历替换,而手动解析只需要一趟(分词和生成结果同时处理)。(具体我没测过)


所以要么是用你最开始的 eval 方式。不过 eval 比 JSON.parse 更慢,因为 eval 处理的是 JS 代码,语法比 JSON 复杂很多倍。
或者用楼主的实现,即先替换成一个带特殊唯一标志的字符串,然后在 JSON.parse 的第二个回调参数里面做替换,或者在 parse 之后遍历。
2022-11-06 16:25:46 +08:00
回复了 Jobing 创建的主题 程序员 当你解析 JSON 时, Number 类型双精度丢失可以尝试使用 json-bn
@wxf666 嗯,看上去这个思路是可以的,优先匹配掉字符串,再匹配的数字串就肯定是字符串外面的。
对转义的处理目前没有发现什么毛病。

@Jobing 楼主可以借鉴一下。
2022-11-05 23:21:36 +08:00
回复了 Jobing 创建的主题 程序员 当你解析 JSON 时, Number 类型双精度丢失可以尝试使用 json-bn
其实你这个实现完善一下应该可以处理这个问题(再往前判断一下属性名的右引号)。

但是别忘了 JSON 里面有数组:

parse('[12345678901234561111]')

通过正则不可能完全识别数组中 Int 。
2022-11-05 23:05:29 +08:00
回复了 Jobing 创建的主题 程序员 当你解析 JSON 时, Number 类型双精度丢失可以尝试使用 json-bn
建议先看看别人是怎么做的:
https://github.com/sidorares/json-bigint

你这几十行靠粗糙的正则替换实现的 json bigint 支持,自己在小项目里面对付简单场景可以,就不要发到 github 和 npm 了哈。

parse('{"x": ": 12345678901234561111"}')

Uncaught SyntaxError: Expected ',' or '}' after property value in JSON at position 11
at JSON.parse (<anonymous>)
at e (<anonymous>:1:242)
at <anonymous>:1:1
2022-07-21 11:22:49 +08:00
回复了 magic3584 创建的主题 git 请教一下,是谁把代码合丢了
以上 #53 有 typo ,3D -> 3B
2022-07-21 11:21:43 +08:00
回复了 magic3584 创建的主题 git 请教一下,是谁把代码合丢了
不知道我对这个图的理解对不对:
1. 3B 是一个 merge ,而且 3B 的 parent commit 之一是 1A ;
2. 1A 中有正常代码,但是 3B 里面没有了。

如果我的理解正确,那么毫无疑问,是 3D 这个 merge 进行的时候,产生了冲突,然后提交者瞎搞把代码搞没了。
至于 4A 完全是无辜的,因为相关的冲突已经被 3D 解决过,到 4A merge 的时候这个地方根本就没有冲突产生。
2022-06-07 15:47:35 +08:00
回复了 tctc4869 创建的主题 程序员 用 html、js、css 写客户端软件,除了 electron 还有哪些方案?
tauri
常见的系统交互(文件操作、唤起选择器之类的)已经封装了 JS API 。不过如果有更复杂的系统交互需求,需要写 rust
2022-05-06 15:07:44 +08:00
回复了 HeFengzz 创建的主题 程序员 Rust 的语法这么难看是不是创造它的人正是 JS 的创始人?
Rust 语法中那些看上去难看的东西,主要是生命周期、引用相关的,和 JS 乱七八糟的历史特性没啥关系。
2022-04-26 17:14:54 +08:00
回复了 iqoo 创建的主题 程序员 有人试过把钉钉的 devtools 打开吗?
钉钉刚出来的时候打开过(直接代码里面搜关键词,改代码),还改过渲染逻辑。
现在就不清楚了。
是有一些设计问题,比如 request 的 content-type 为 application/json 需要发预检,而 www-form-urlencoded 却不需要。明明这两种只是序列化的方式不同而已。
另外如果自定义了 header ,也要发预检,这个也挺奇怪的。

要我设计,就应该 GET 都不发,POST PUT 等都发。
2022-03-31 10:26:58 +08:00
回复了 w741069229 创建的主题 Java Java 项目该不该用 stream 流来编写代码?考虑 code viewer
22 年了大概只有 Java 圈才会出现这种问题...
这些网站这种页面很多,毕竟公司还活得好好的
其实最简单的办法就是直接导出 HTML ,如果是想阅读,在浏览器里面打开就行。如果想编辑,word 也支持打开 HTML (当然也能导出 word )
「历史问题,后面走迭代修」
PingCAP 在杭州有部门?
2021-12-03 11:36:56 +08:00
回复了 bertonzh 创建的主题 分享创造 写了一个压缩 PNG/JPEG 的 GUI 工具
@youthfire 之前有人提出过这个问题,所以后面加了一个一键清除增大文件的开关。
遇到这种情况说明你的原文件压缩得不错,所以可以清除掉直接用原文件。
2021-12-03 11:27:32 +08:00
回复了 bertonzh 创建的主题 分享创造 写了一个压缩 PNG/JPEG 的 GUI 工具
@youthfire 你用 ImageMagick 命令的 quality 参数试一下就明白了。或者用 PhotoShop 输出 JPG 试一下,也有质量参数。
质量 100% 也是要重新进行编码的,既然重新编码了就可能导致体积变化。100% 只表示处理前后质量效果基本没有区别而已。
2021-10-20 16:21:04 +08:00
回复了 iqoo 创建的主题 分享创造 一键上传文件到 NPM 仓库
@bertonzh 打错了,NPM + UNPKG
1  2  3  4  5  6  7  8  9  10 ... 13  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5105 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 09:36 · PVG 17:36 · LAX 02:36 · JFK 05:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.