【问题标题】:How to Remove Half Received JSON String from an Array node js如何从数组节点 js 中删除一半接收到的 JSON 字符串
【发布时间】:2017-01-18 21:29:27
【问题描述】:

我使用 JSON 和 NODEJS

我正在从 TCP 接收数据,我正在接收这样的数据

[{"identification": {"id":3100,"version":1}},{"json1" : "THIS IS ONE json" },{"c]

[{"identification": {"id":3100,"version":1}},{"json1" : "THIS IS ONE json" },{"some n letters]

像这样它在接收 TCP 数据时被截断,我想删除一半接收到的数据,或者有什么方法可以接收完整的缓冲区

我希望输出是

[{"identification": {"id":3100,"version":1}},{"json1" : "THIS IS ONE json" }]

【问题讨论】:

  • 我不熟悉node js,但是作为它的javascript,你可以在node js中使用纯javascript代码吗? -- 如果是这样,你可以在第二个逗号之后拆分字符串 -- 参见演示 -- jsfiddle.net/alexdickson/zZKgd
  • 它只是一个样本,我在特定没有 json 对象之后收到了一半的 json 数据。我在 n 次之后收到它,比如在 5 个 @Tasos 之后的 4 个 json 对象之后
  • 你想剪成这样吗(“这是一个json”)
  • 如果我在 ',' 处分离,那么在 json 数据@Tasos 中也有一些 ','
  • 是的,我看到了——用预期的结果更新你的问题,因为(我想删除那一半收到的数据)并不能解释很多

标签: json node.js tcp tcpserver


【解决方案1】:

一种笨拙但简单的方法是获取字符串/缓冲区并尝试使用JSON.parse() 进行解析。将其包裹在try/catch 中,并仅在成功时设置最终值。

var badJson = '[{"identification": {"id":3100,"version":1}},{"json1" : "THIS IS ONE json" },{"c]';

try {
    var result = JSON.parse(badJson);
}
catch(e) {
    console.log('bad json, not parsing yet');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    相关资源
    最近更新 更多