【记录】Html转Json

本文记录了将HTML内容转换为JSON格式的过程,包括在项目中配置pom文件和编写主要转换类的关键步骤。
摘要由CSDN通过智能技术生成

pom

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.11.3</version>
    </dependency>

主要类

package com.microstone.app.util.html2json.api;


import com.jfinal.core.Controller;
import com.jfinal.kit.StrKit;
import com.microstone.app.util.html2json.core.HtmlToJson;

import java.util.Collections;


public class IndexController extends Controller {
   
	
	/**
	 * 获取转换条件
	 * @return
	 */
	private Params getParams(){
   
		//类型 默认HMTL
		String type=getPara("type",Params.TYPE_HTML);
		//是否开启pre代码高亮 默认开启
		Boolean highlight=getParaToBoolean("highlight",true);
		//是否开启pre代码行号 默认开启
		Boolean linenums=getParaToBoolean("linenums",true);
		//获取a和img静态资源的根路径URL
		String baseUri=getPara("host",getPara("imghost"));//后面版本兼容更新会修改名称 这里先行适配
		
		//这里因为需要适配html2wxml前端小程序 所以只能这么写
		//拿到html2wxml组件版源码可以自行修改传递参数包装起来传递{"params":params}
		//使用Params params=getBean(Params.class); 就能直接获取了
		Params params=new Params();
		params.setHighlight(highlight);
		params.setLinenums(linenums);
		params.setType(type);
		params.setBaseUri(baseUri);
		return params;
	}
	/**
	 * 转换接口主入口
	 */
	public void index(){
   
		//获取需要转化的文本内容
		String text=getPara("text");
		//获取转换条件参数
		Params params=getParams();
		//执行转换 返回结果
		long startTime=System.currentTimeMillis();
		String resultJson= HtmlToJson.by(text,params).get();
		long endTime=System.currentTimeMillis();
		long useTime=endTime-startTime;
		System.out.println("耗时:"+useTime);
		if(StrKit.isBlank(resultJson)){
   
			renderJson(Collections.emptyList());
		}else{
   
			renderJson(resultJson);
		}
	}
}

package com.microstone.app.util.html2json.api;

public class Params {
   
    public static final String TYPE_HTML = "html";
    public static final String TYPE_MD = "md";
    public static final String TYPE_MARKDOWN = "markdown";
    private String type;//类型 html markdown md
    private Boolean highlight;//是否开启pre代码高亮
    private Boolean linenums;//是否开启显示pre代码行号
    private String baseUri;//超链接或者图片的根URL

    public String getType() {
   
        return type;
    }

    public void setType(String type) {
   
        this.type = type;
    }

    public Boolean getHighlight() {
   
        return highlight;
    }

    public void setHighlight(Boolean highlight) {
   
        this.highlight = highlight;
    }

    public Boolean getLinenums() {
   
        return linenums;
    }

    public void setLinenums(Boolean linenums) {
   
        this.linenums = linenums;
    }

    public String getBaseUri() {
   
        return baseUri;
    }

    public void setBaseUri(String baseUri) {
   
        this.baseUri = baseUri;
    }
}

package com.microstone.app.util.html2json.config;


import com.jfinal.config.*;
import com.jfinal.json.FastJsonFactory;
import com.jfinal.kit.PropKit;
import com.jfinal.render.ViewType;
import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.template.Engine;
import com.microstone.app.util.html2json.api.IndexController;

public class MainConfig extends JFinalConfig {
   
	/**
	 * 配置JFinal常量
	 */
	@Override
	public void configConstant(Constants me) {
   
		//读取数据库配置文件
		PropKit.use("config.properties");
		//设置当前是否为开发模式
		me.setDevMode(PropKit.getBoolean("devMode"));
		//设置默认视图类型
		me.setViewType(ViewType.JFINAL_TEMPLATE);
		//设置json工厂
		me.setJsonFactory(FastJsonFactory.me());
		
		
	}
	/**
	 * 配置JFinal路由映射
	 */
	@Override
	public void configRoute(Routes me) {
   
		me.add("/", IndexController.class);
	}
	/**
	 * 配置JFinal插件
	 * 数据库连接池
	 * ORM
	 * 缓存等插件
	 * 自定义插件
	 */
	@Override
	public void configPlugin(Plugins me) {
   
	
	}
	/**
	 * 配置全局拦截器
	 */
	@Override
	public void configInterceptor(Interceptors me) {
   
	}
	/**
	 * 配置全局处理器
	 */
	@Override
	public void configHandler(Handlers me) {
   

	}
	
	/**
	 * 配置模板引擎 
	 */
	@Override
	public void configEngine(Engine me) {
   
		//这里只有选择JFinal TPL的时候才用
		//配置共享函数模板
		//me.addSharedFunction("/view/common/layout.html")
	}
	
//	public static void main(String[] args) {
   
//		UndertowServer.create(MainConfig.class,"undertow.properties").start();
//	}
//

}

package com.microstone.app.util.html2json.core;


import com.alibaba.fastjson.JSONArray;
import com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值