Vert.x学习(三)—— WebSocket、数据共享、流式传输、Record Parser

时间:2025-04-18 06:58:37
JsonParser parser = JsonParser.newParser(); parser.handler(event -> { switch (event.type()) { case START_ARRAY: log.info("["); break; case START_OBJECT: log.info("{"); // 切换到 value-mode: 后续 VALUE 事件中直接返回字段的完整嵌套对象/数组值 (JsonObject/JsonArray), // 并跳过这些嵌套结构内部的 START/END/VALUE 事件。适用于直接提取嵌套体。 parser.objectValueMode(); break; //每处理一个字段,都会触发该事件 case VALUE: //直接提前整个JSON对象 if(event.fieldName().equals("address")){ Address address = event.mapTo(Address.class); log.info(address); } log.info(event.fieldName() + ":"+ event.value()); break; case END_OBJECT: log.info("}"); // 设置为 event-mode,所以解析器重新触发 start-end 事件,如果在之前的事件中设置过objectValueMode,则必须调用 parser.objectEventMode(); break; case END_ARRAY: log.info("]"); break; } }); Buffer jsonBuffer = Buffer.buffer( "[" + "{" + "\"firstName\": \"Bob\"," + //嵌套对象Address "\"address\": {" + "\"city\": \"Paris\"," + "\"country\": \"France\"" + "}" + "}," + "{" + "\"firstName\": \"Luke\"," + "\"address\": {" + "\"city\": \"Daisy Town\"," + "\"country\": \"USA\"" + "}" + "}" + "]" ); parser.handle(jsonBuffer); parser.end();