# Result #valid #{"k"=>"vvv"} #{"k"=>"vvv"} #{"k"=>"vvv"} #invalid utf-8 with US-ASCII #{"k"=>"v\xFFvv"} #{"k"=>"v\xFFvv"} #"Yajl: error: lexical error: invalid bytes in UTF8 string.\n # {\"k\":\"v\xFFvv\"}\n (right here) ------^\n" require 'json' require 'oj' require 'yajl' json = "{\"k\":\"vvv\"}" puts "valid" begin p JSON.parse(json) rescue => e p "JSON: error: #{e}" end begin p Oj.load(json) rescue => e p "Oj: error: #{e}" end begin p Yajl.load(json) rescue => e p "Yajl: error: #{e}" end json = "{\"k\":\"v#{0xff.chr}vv\"}" puts "invalid utf-8 with US-ASCII" begin p JSON.parse(json) rescue => e p "JSON: error: #{e}" end begin p Oj.load(json) rescue => e p "Oj: error: #{e}" end begin p Yajl.load(json) rescue => e p "Yajl: error: #{e}" end