Ruby on rails Rails中的JSON响应
我正在为我的大学项目使用一个API,它向我发送多个响应,这些响应都是有效的JSONRuby on rails Rails中的JSON响应,ruby-on-rails,ruby,json,Ruby On Rails,Ruby,Json,我正在为我的大学项目使用一个API,它向我发送多个响应,这些响应都是有效的JSON { apiCode: "SUCCESS_WITH_ERRORS", friendlyMessage: "Some of the information was not processed", successfulIds: [ { ssid: "My Test 1", bssid: "2d:8c:e5:5c:bb:b9" }, { ssid: "My Test 2",
{
apiCode: "SUCCESS_WITH_ERRORS",
friendlyMessage: "Some of the information was not processed",
successfulIds: [
{
ssid: "My Test 1",
bssid: "2d:8c:e5:5c:bb:b9"
},
{
ssid: "My Test 2",
bssid: "2a:7d:a4:5c:aa:a7"
}
]
它们在response.body中都被视为字符串,因此我需要将它们解析为JSON或ruby对象
第一个通过JSON解析器,但如果使用eval
返回ruby对象,则会失败
{
apiCode: "SUCCESS",
friendlyMessage: "All information saved successfully"
}
第二个通过eval并给我一个有效的Ruby对象,但作为一个有效的JSON失败
{
apiCode: "SUCCESS_WITH_ERRORS",
friendlyMessage: "Some of the information was not processed",
successfulIds: [
{
ssid: "My Test 1",
bssid: "2d:8c:e5:5c:bb:b9"
},
{
ssid: "My Test 2",
bssid: "2a:7d:a4:5c:aa:a7"
}
]
问候,
Babar通过和Ruby的
JSON
库运行JSON blob会导致错误
第一个的错误是
Error: Parse error on line 1:
{ apiCode: "SUCCESS",
--^
Expecting 'STRING', '}', got 'undefined'
第二个是
Error: Parse error on line 1:
{ apiCode: "SUCCESS_WI
--^
Expecting 'STRING', '}', got 'undefined'
这些错误表明您的JSON应该如下所示(我在这里显示第一个)
(在任何地方都能成功解析)。使用
eval
解析来自外部源的数据是一个坏主意,因为它会打开直接代码执行漏洞
对于解析JSON,有一个内置解析器:
require 'json'
ruby_object = JSON.load(your_json_string)
为了提高速度,如果需要,可以直接或通过MultiJson
gem使用专用的json解析器gem,如oj
另外,您的第二个json缺少最后一个
}
,因此无效,json中的哈希键也应该位于“
我使用了JSlint,它显示为一个有效的JSON对象,但是它不符合某些RFC。让我测试一下您的建议。@Babar因为它不是有效的json,如果API中的错误失控,但一致,您可以将响应修改为字符串来更正它