gpt4 book ai didi

javascript - 解析没有逗号分隔符的json数据

转载 作者:行者123 更新时间:2023-11-29 16:08:00 41 4
gpt4 key购买 nike

我的 JSON 如下所示

{"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}}
{"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}}
{"_id":1283378,"name":"Gorkhā","country":"NP","coord":{"lon":84.633331,"lat":28}}
{"_id":1270260,"name":"State of Haryāna","country":"IN","coord":{"lon":76,"lat":29}}
{"_id":708546,"name":"Holubynka","country":"UA","coord":{"lon":33.900002,"lat":44.599998}}

这是一个没有逗号分隔的JSON,如何读取这个文件?我尝试解析 JSON 并在两者之间添加逗号,但也无法做到这一点。

myapp.controller('Ctrl', ['$scope', '$http', function($scope, $http) {
$http.get('todos.json').success(function(data) {
var nuarr = data.toString().split("\n");
for(i in nuarr) {
myjson.push(i+",");
}
});
}]);

最佳答案

这种格式通常称为“换行分隔的 JSON”或“ndjson”;有几个模块可以解析这个,但是如果你的数据集很小并且你可以一次完成所有这些,那么你就在正确的轨道上:

var ndjson = "..." // assuming your data is already loaded in as a string

var records = ndjson.split('\n').map(function (record) {
return JSON.parse(record)
})

这稍微简化了它,但随后您将所有记录都放在一个数组中,作为已解析的 JSON 对象。之后你对它们做什么取决于你,但这里的关键是你的 JSON 是一个对象列表,而不是单个对象:你不想将它作为一个整体来解析,而是作为单独的记录来解析。

然后,您想要创建一个对象,其键是各个 ID;这可能会有帮助:

var recordHash = {}

records.forEach(function (record) {
recordHash[record._id] = record
})

现在您可以将单个记录寻址为 recordHash['12345678'],假设 12345678 是您想要的记录的 ID。您需要将记录转变为对您的应用程序有意义的任何数据结构,因此这实际上取决于您要查找的内容,但该示例可能会让您入门。

我真的不建议在解析之前尝试将您接收到的数据转变为其他格式;很脆弱。您会发现按照提供给您的方式解析数据,然后将其转换为对您的应用程序有意义的任何数据结构,会更加安全且可重复使用。

关于javascript - 解析没有逗号分隔符的json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122391/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com