为什么使用此JSON转换器/解析器总是会导致异常(Unexpected token: EOF at 1:98
)?
class MyParser
def self.from_json(value : JSON::PullParser) : String
"static"
end
# ...
end
class User
JSON.mapping(
first_name: {type: String, converter: MyParser},
last_name: {type: String, converter: MyParser}
)
end
答案 0 :(得分:3)
JSON::PullParser
的使用总是要求您使用一个完整的值。如果您不想读取json值,可以使用JSON::PullParser#skip
。
要想象出这是为什么,请将JSON::PullParser
视为JSON流中的游标。调用from_json
方法时,光标位于流中,如"key": |"value"
,其中|
是光标位置(显然"value"
可以是数组,另一个对象,或者任何东西)。如果您通过调用read_string
上的PullParser
来阅读字符串,则会转到"key": "value"|
并且光标已准备好读取,
然后是下一个对象键,或{{ 1}}如果它是对象的结尾。如果您不想阅读该值,则必须致电}
以达到与您调用skip
相同的状态,否则解析器将处于无效状态。< / p>