技术小黑屋

一个检测 Json 合法性的脚本

越来越多的配置都是使用 json 的格式,当我们修改好,最好是进行一下 json 合法性校验。

我们可以使用下面的脚本进行校验。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env ruby
# encoding: utf-8
require 'json'
file = ARGV[0]


def is_json_valid(value)
  result = JSON.parse(value)
    result.is_a?(Hash) || result.is_a?(Array)
  rescue JSON::ParserError, TypeError
    false
  end


result = is_json_valid(File.open(file).read)
puts "json is valid(#{result})"

进行一些验证

验证错误文件1 (非json 文件)

1
2
3
4
cat /tmp/bad_json.json
123
checkJson.rb /tmp/bad_json.json
json is valid(false)

验证错误文件2 (json文件,但是引号错误)

1
2
3
4
5
6
7
cat /tmp/bad_json_1.json
{
  'aaa': "b"
}

checkJson.rb /tmp/bad_json_1.json
json is valid(false)

验证错误文件3(空文件)

1
2
3
4
cat /tmp/empty.txt

checkJson.rb /tmp/empty.txt
json is valid(false)

验证正确文件1 (空JsonObject)

1
2
3
4
cat /tmp/good_json_1.json
{}
checkJson.rb /tmp/good_json_1.json
json is valid(true)

验证正确文件2(空 JsonArray)

1
2
3
4
 cat /tmp/good_json_2.json
[]
checkJson.rb /tmp/good_json_2.json
json is valid(true)

验证正确文件3 (正常数据)

1
2
3
4
5
6
7
cat /tmp/good_json_3.json
{
  "key": "value"
}

checkJson.rb /tmp/good_json_3.json
json is valid(true)




快来解锁最新版 Typora,新用户券后仅需 84 元!
如何便宜的购买 office 365 ?
新版赤友 NTFS 助手来袭,正版超低价