json在线解析功能代码实现

json在线解析功能代码实现

	当在查看一些原始报文数据时,需要美化展示原始报文json,这时需要使用css进行相应排版。
	下面的<pre>标签不能换成其他标签(例如div、a等),否则不能换行显示,暂时没有发现问题所在。
	这里用到了bootstrap tab插件需要引入css及js相关文件
	<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
	<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
	<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

jsp部分

<div class="modal fade popup" id="message" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-backdrop="static">
        <div class="modal-dialog" style="width:1000px;">
            <div class="modal-content">
                <div class="panel panel-info">
                    <div class="panel-heading">
                        报文明细
                        <span class="pull-right">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                        </span>
                    </div>
                    <div class="panel-body" style="overflow-y: auto; max-height:600px;">
                        <ul id="myTab" class="nav nav-tabs">
                            <li class="active">
                                <a href="#first" data-toggle="tab">
                                    信贷报文
                                </a>
                            </li>
                            <li><a href="#second" data-toggle="tab">三方报文</a></li>
                        </ul>
                        <div id="myTabContent" class="tab-content">
                            <div class="tab-pane fade in active high-night-show" id="first">
                                <pre class="creditInfo">信贷报文</pre>
                            </div>
                            <div class="tab-pane fade high-night-show" id="second">
                                <pre class="loadInfo">三方报文</pre>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

js部分

function syntaxHighlight(json) {
    if (typeof json == 'string') {
        json = JSON.parse(json);
    }

    json = JSON.stringify(json, undefined, 2);

    json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
    return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
        var cls = 'number';
        if (/^"/.test(match)) {
            if (/:$/.test(match)) {
                cls = 'key';
            } else {
                cls = 'string';
            }
        } else if (/true|false/.test(match)) {
            cls = 'boolean';
        } else if (/null/.test(match)) {
            cls = 'null';
        }
        return '<span class="' + cls + '">' + match + '</span>';
    });
};

$(".creditInfo").html(syntaxHighlight(creditInfo));
$(".loadInfo").html(syntaxHighlight(loadInfo));
$("#message").modal();

css部分

pre {
    outline: 1px solid #ccc;
    padding: 5px;
    margin: 5px;
}
.string { color: green; }
.number { color: darkorange; }
.boolean { color: blue; }
.null { color: magenta; }
.key { color: red; }

最终效果

这里写图片描述

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于C语言而言,实现JSON的读写和解析功能需要自己手动实现相应的函数。下面是一个简单的示例代码,可以实现JSON的读写和解析功能: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 1024 typedef struct { char name[SIZE]; char value[SIZE]; } JSON_PAIR; typedef struct { JSON_PAIR* pairs; int len; } JSON_OBJECT; JSON_OBJECT* parse_json(char* str); void print_json(JSON_OBJECT* obj); char* read_file(char* filename); int main(int argc, char const *argv[]) { char* filename = "data.json"; char* json_str = read_file(filename); JSON_OBJECT* obj = parse_json(json_str); print_json(obj); return 0; } JSON_OBJECT* parse_json(char* str) { JSON_OBJECT* obj = malloc(sizeof(JSON_OBJECT)); obj->pairs = malloc(sizeof(JSON_PAIR) * SIZE); obj->len = 0; int len = strlen(str); char* token = strtok(str, "{},:\""); char* name = NULL; int is_name = 1; while (token != NULL) { if (is_name) { name = token; } else { strcpy(obj->pairs[obj->len].name, name); strcpy(obj->pairs[obj->len].value, token); obj->len++; } is_name = !is_name; token = strtok(NULL, "{},:\""); } return obj; } void print_json(JSON_OBJECT* obj) { printf("{\n"); for (int i = 0; i < obj->len; i++) { printf(" \"%s\": \"%s\",\n", obj->pairs[i].name, obj->pairs[i].value); } printf("}\n"); } char* read_file(char* filename) { FILE* fp = fopen(filename, "r"); char* buffer = malloc(sizeof(char) * SIZE); int i = 0; char c = fgetc(fp); while (c != EOF) { buffer[i++] = c; c = fgetc(fp); } buffer[i] = '\0'; fclose(fp); return buffer; } ``` 这个示例代码可以读取一个名为data.json的文件,解析其中的JSON字符串并输出到控制台上。在这个示例中,我们手动实现了parse_json和print_json两个函数,前者用于解析JSON,后者用于打印JSON对象。在实际应用中,我们可以根据需要对这些函数进行修改和扩展,以满足具体的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾卫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值