Я пытаюсь разобрать строку JSON с помощью net.liftweb.util.JSONParser. Это метод синтаксического анализа() возвращает окно [Any] значение, которое я хочу обработать с помощью сопоставления с образцом, как это:Использование сопоставления с результатом net.liftweb.util.JSONParser.parse
JSONParser.parse("{foo: 'xxx', bar: 'yyy'}") match {
case Full(Map) => println("ok")
case x => println(x)
}
Я бы ожидать, этот код, чтобы напечатать «ОК», но вместо этого она печатает
Full(Map(foo -> xxx, bar -> yyy))
Кто-нибудь есть идея, что не так с моим заявлением?
Это не работает ни потому, что JSONParser.parse() возвращает поле [Any]. Если это поле не пустое, оно будет содержать карту. Поэтому мне нужно как-то сопоставить Full (Карта) - не просто карту. Мой вопрос больше связан с шаблоном, сопоставляемым с JSONParser. У меня нет требований к парсеру JSON, поэтому я мог бы заставить его работать, используя другой. Но я хочу понять соответствие шаблонов. Я хочу знать, почему мой подход не работает и как я должен это делать. – Michael
Обновленный с помощью рабочего кода, вы просто пропустили [_, _] из своего исходного матча. – fmpwizard