在 ruby 和 js 中从 json 中提取字符串

extracting string from json in ruby and js

目前,我们在 ruby 中使用 Elixir API 构建我们的项目。并且因为我们使用 Ecto 验证来验证我们的参数。有一个遍历函数,我们可以通过它得到错误,但它是

  "message": {
    "to_date": [
      "can't be blank"
    ],
    "title": [
      "can't be blank"
    ],
    "requested_by": [
      "can't be blank"
    ],
    "from_date": [
      "can't be blank"
    ],
    "exid": [
      "can't be blank"
    ]
  }
}

有没有办法以良好的形式提取这些消息?例如它们应该表示为 exid can't be black

不确定您要查找的内容。也许是这样的?

function sanitizeErrors(errs) {
  var msg = errs.message;
  var result = {};

  for (var key in msg) {
    result[key] = key.replace('_', ' ') + ' ' + msg[key][0];
  }

  return result;
}

您可以在这里进行测试:http://jsbin.com/saviyi/edit?js,console

它生成一个如下所示的对象:

{
  exid: "exid can't be blank",
  from_date: "from date can't be blank",
  requested_by: "requested by can't be blank",
  title: "title can't be blank",
  to_date: "to date can't be blank"
}

使用内置 JSON 解析器的浏览器,如果它有 javascript 支持,您可以 JSON.parse 将您的消息作为参数,然后执行以下四项操作之一我的头顶。

  • 在同一行访问它。
  • 将其放入另一个 javascript 对象中。
  • return 给你的来电者。
  • 迭代它。

然后您可以使用任何迭代器访问它,或者使用像

这样的点符号
b=JSON.parse('{"a":"b","7":0,"1":0,"0":1,"5":[1,5,8,6],"g":"Hello World"}').a
#The string "b"
b[7] # 0
b[5] # an array with 1 5 8 and 6
alert(b.g)

在您的浏览器控制台中尝试!!

方括号意味着您将每条消息作为数组中的第一个元素,但这非常容易处理!