java 解析 json

本贴最后更新于 3303 天前,其中的信息可能已经沧海桑田

我解析 json 用的是

1461122367666

解析的是如下数据类型:

1461122480573

现在问题是,msg_ID,msg_type 那两种我看网上说的都是匹配 mail 的正则。

如果用我的 JSONUtil 解析以后,上面两种正则解析出如下格式:

1461122813213

红色框中的\全部没有了,绿色的那种是由原来的 双\ 解析成\。而在用的时候,肯定绿色框中的是正则形式。

那只需要在解析前将\全部换成 双\ 就可以了吗,不会有其他的问题吗?(其实做那个文件时候也可以遇到\就写成 双\ ,不过估计客户不干。。。)

另外,只有这个符号会出这种问题吗?其他有没有符号比较特殊呢? 这也不能每个符号都去测试一次吧?

你们有解析 json 格式的数据,里面 value 值是正则表达式的情况吗?如果有,那怎么解决的呢?

(刚才预览发现如果我在文中写两个\,组合的形式,预览的时候,只显示一个\,于是将原来写两个\的地方改成了 双\)。

打赏 10 积分后可见
10 积分 • 4 打赏
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖 • 1 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3200 引用 • 8216 回帖

相关帖子

24 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • qzzsunly 1

    因为反斜杠在 java 中需要转义的啊

  • yangyujiao
    作者

    @qzzsunly 那就是只有这一个符号会有问题吗? 就这一个好解决 我可以再解析前转一下,抗不住,有很多类似的特殊字符呀。。。

  • qzzsunly

    @yangyujiao 比如还有啥特殊字符

  • yangyujiao
    作者

    @qzzsunly 这我刚随便在网上看了一个。

    1461123766671

    但是其实没咋看明白,况且这难道就是全部?

  • hei

    这不是全部,网上 有解决处理正则特殊符号的例子

  • yangyujiao
    作者

    @hei 我就在找,但是没有找到。很多都是说用正则去解析 json 的。没有找到 json 中是个正则表达式的怎么去解析。

  • yangyujiao
    作者

    @participants
    这种是正则:

    1461124107458

    这种是不是呢,就是把里面的单\ 变成了双\

    1461124138535

    上面两张截图我参考的位置:http://www.cnblogs.com/light169/archive/2006/10/18/532347.html

  • 714593351

    赞饺子!

  • 714593351

    顶饺子!

  • zempty

    辛苦了,写得很好。

  • yangyujiao
    作者

    @zempty 谢谢捧场 👏

  • 大有收获!!!!打赏值!

  • 不知道 fastjson 会怎么样~~~

  • yangyujiao
    作者

    @Hassan 我没有用这个解压过,不知道,你如果有这个包,可以试试,把结果告知一下。

  • 人生苦短,我用 Python

  • Angonger

    \\

  • Angonger

    "\\"

  • @yangyujiao

    我试了一下,fastjson,解析第一个直接报错;解析第二个双\解析成\。

    我顺带看了一下 json 格式的标准,其中字符串值的格式要求是:
    1461204658987
    A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.

    所以理论上说 JSONUtil 解析第一个直接把\去掉并不合理,应该抛异常才对,因为第一个根本就是错误的 json 格式!第二个双\解析成\是合理的!

  • 所以,问题不在你需要转义的问题,而是产生这个数据源的程序的问题~

  • 转义的时候,应该检查 json 格式,不满足 json 格式就直接抛异常了。不应该继续解析。

  • yangyujiao
    作者

    @Hassan 我现在的解决办法就是,因为我是读取那个有正则的 json 文件,让写这个文件的人,如果用了特殊的字符就加\转义,我程序不做处理了。这样合理吗?

    “不满足json格式就直接抛异常了”

    好像真的是你说的这样,这明明就不符合 json 格式的,但是我用的那个类根本就没有抛出异常。我在 json 验证中是会出错的:

    1461205488348

    那是不是我可以用我的那个解决办法,就是程序不做任何处理,就是 json 文件里面处理。

  • @yangyujiao 对,程序不应该继续处理格式不对的 json 字符串,应该抛异常才合理。处理 json 文件才对。(应该处理产生 json 文件的程序,这是职责问题)

  • yangyujiao
    作者

    @Hassan 谢谢啦,么么哒

  • zonghua

    @Hassan Python 总是解码成 unicode 也是烦

请输入回帖内容 ...

推荐标签 标签

  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 735 关注
  • CodeMirror
    2 引用 • 17 回帖 • 162 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 546 关注
  • danl
    164 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 10 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 250 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 635 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 127 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 9 关注
  • Access
    1 引用 • 3 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    199 引用 • 542 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 180 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 4 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 676 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 726 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 2 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    133 引用 • 1124 回帖 • 112 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 762 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 141 回帖 • 1 关注
  • OnlyOffice
    4 引用 • 22 关注