当前位置: 首页 > 面试题库 >

node.js是否有任何适当的方法可以解析大量的JSON?(long,bigint,int64)

叶恩
2023-03-14
问题内容

当我解析这小块JSON时

{ "value" : 9223372036854775807 }

那就是我得到的

{ hello: 9223372036854776000 }

有什么办法可以正确解析它吗?


问题答案:

不适用于内置的JSON.parse。您需要手动对其进行解析,并将值视为字符串(如果您想对它们进行算术运算,则可以使用bignumber.js)。您可以将Douglas
Crockford JSON.js库用作解析器的基础。

编辑:我为您创建了一个包 :)

var JSONbig = require('json-bigint');

var json = '{ "value" : 9223372036854775807, "v2": 123 }';
console.log('Input:', json);
console.log('');

console.log('node.js bult-in JSON:')
var r = JSON.parse(json);
console.log('JSON.parse(input).value : ', r.value.toString());
console.log('JSON.stringify(JSON.parse(input)):', JSON.stringify(r));

console.log('\n\nbig number JSON:');
var r1 = JSONbig.parse(json);
console.log('JSON.parse(input).value : ', r1.value.toString());
console.log('JSON.stringify(JSON.parse(input)):', JSONbig.stringify(r1));

输出:

Input: { "value" : 9223372036854775807, "v2": 123 }

node.js bult-in JSON:
JSON.parse(input).value :  9223372036854776000
JSON.stringify(JSON.parse(input)): {"value":9223372036854776000,"v2":123}


big number JSON:
JSON.parse(input).value :  9223372036854775807
JSON.stringify(JSON.parse(input)): {"value":9223372036854775807,"v2":123}


 类似资料:
  • Spring Data JPA可以使用规范求和。但是它有办法使用方法名解析来求和实体列吗?比方说,我想要一个方法suCreditAmount来求和具有特定名称的列,就像一个方法findByCreditAmount来获取具有特定信用额的所有实体一样。

  • 在我的UI中,我尝试使用不同的按钮在应该显示的活动工作表之间切换。 显示正常。但是,我不知道该如何正确地将其辞退。用户可以将激活的工作表划走。它消失了。不过,不知道内存会不会腾出来呢?是否应该有额外的代码,以正确的方式消除这些活动的工作表?

  • 问题内容: 我正在尝试在VB6中使用Web服务。该服务-由我控制-当前可以返回SOAP / XML消息或JSON。我有一个非常困难的时候搞清楚,如果VB6的SOAP类型(第1版)可以处理返回-而不是简单的类型,如,等。到目前为止,我想不出什么,我需要做的就是VB6与返回玩对象。 所以我想我可以将Web服务中的响应序列化为JSON字符串。VB6是否存在JSON解析器? 问题答案: 请访问JSON.o

  • 我有来自API的json形式的对象列表。这些对象有一些属性,问题是一些对象缺少属性。那么如何无错误地解析其他属性的数据呢? 例如,我有这个缺少的属性 但这所有属性都存在:

  • 问题内容: 如果无法将字符串解析为long则抛出错误。有没有比使用更快的方法来验证字符串?谢谢 问题答案: 您可以创建相当复杂的正则表达式,但这不值得。在这里使用异常是绝对正常的。 这是自然的例外情况:您假设字符串中有一个整数,但实际上还有其他东西。应该抛出异常并正确处理。 如果查看内部代码,将会看到有许多不同的验证和操作。如果要在解析之前执行所有操作,则会降低性能(如果我们正在谈论解析数百万个数

  • 问题内容: 我有一些现在大于INT可以处理的数字。 这有点令人尴尬,但老实说我不确切知道BIGINT(8)的含义。8是最大位值还是最大长度? 那么BIGINT(1)只能是一位数字吗?还是BIGINT(1)还有其他东西?我认为tinyint(1)最大值为127,如何计算出来? 我能做的最大的事情是什么?我可以在mysql中存储为整数的最大数字是多少? 问题答案: 数字代表它的显示方式-不会影响数据的