【发布时间】:2013-08-30 00:51:17
【问题描述】:
我正在尝试使用https://github.com/dcodeIO/ProtoBuf.js 来解析triments gtfs 数据。
这是我到目前为止的代码,它正确解析 .proto 文件并创建构建器并具有所有预期的属性和方法,当我尝试使用它解码任何数据时会引发错误。
Error: Data must be corrupt: Buffer overrun
原始文件来自https://developers.google.com/transit/gtfs-realtime/gtfs-realtime-proto
var ProtoBuf = require('protobufjs')
, request = require('request')
var transit = ProtoBuf.protoFromFile('gtfs-realtime.proto').build('transit_realtime')
request('http://developer.trimet.org/ws/V1/FeedSpecAlerts/?appID=618F30BB3062F39AF24AED9EC', parse)
function parse(err, res, body) {
try {
console.log(transit.FeedMessage.decode(res.body))
} catch(e) {
console.log(e)
}
}
感谢 Brian Ferris,我能够解析标题的第一部分 gtfs_realtime_version: "1",但解析器在下一个组件上失败(时间戳 uint64)
感谢
【问题讨论】:
-
我用的是res.body,因为它是一个缓冲区,传入的body是一个字符串
-
你发现这个问题了吗?查看 MTA 地铁 gtfs-r 提要时,我遇到了完全相同的问题。
-
不抱歉,我放弃了,当时我的结论是 js 解析器不符合规范,但也许其中一些已经更新
标签: javascript node.js gtfs protocol-buffers