java jettison_java – 使用Jettison进行JSON解析 – 堆栈内存溢出

java jettison_java – 使用Jettison进行JSON解析 – 堆栈内存溢出如果您最终正在寻找使用 JAXB JSR 222 实现与 JSON 交互的方法 那么以下是使用 MOXy 完成它的方法 Jettison 是一个有趣的库 但是你会遇到一些问题 演示仅使用标准 JavaSEAPI 需要在 Unmarshaller 上设置两个 MOXy 特定属性 eclipselink media type 指定 application json eclipselink json

如果您最终正在寻找使用JAXB(JSR-222)实现与JSON交互的方法,那么以下是使用MOXy完成它的方法。 Jettison是一个有趣的库,但是你会遇到一些问题:

演示

仅使用标准Java SE API。 需要在Unmarshaller上设置两个MOXy特定属性: “eclipselink.media-type”指定”application/json” , “eclipselink.json.include-root”指示没有根节点。

package forum;

import java.io.StringReader;

import java.util.ArrayList;

import javax.xml.bind.*;

import javax.xml.transform.stream.StreamSource;

public class Demo {

private static final String s =”{\”appUsage\”:[{\”appName\”:\”ANDROID\”,\”totalUsers\”:\”0\”},{\”appName\”:\”IOS\”,\”totalUsers\”:\”4\”}]}”;

public static void main(String[] args) throws Exception {

JAXBContext jc = JAXBContext.newInstance(Root.class);

Unmarshaller unmarshaller = jc.createUnmarshaller();

unmarshaller.setProperty(“eclipselink.media-type”, “application/json”);

unmarshaller.setProperty(“eclipselink.json.include-root”, false);

StreamSource json = new StreamSource(new StringReader(s));

Root root = unmarshaller.unmarshal(json, Root.class).getValue();

ArrayList customer = root.appUsage;

for(MiAppUsage miAppUsage : customer) {

System.out.print(miAppUsage.appName);

System.out.print(‘ ‘);

System.out.println(miAppUsage.totalUsers);

}

}

}

我不得不介绍这个课程来满足你的用例。 如果你的JSON看起来像我们可以消除这个类: [{“appName”:”ANDROID”,”totalUsers”:”0″},{“appName”:”IOS”,”totalUsers”:”4″}] 。

package forum;

import java.util.ArrayList;

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)

public class Root {

ArrayList appUsage;

}

MiAppUsage

package forum;

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)

public class MiAppUsage {

String appName;

int totalUsers;

}

jaxb.properties

要将MOXy指定为JAXB提供程序,您需要添加一个名为java.properties的文件,并在与您的域类相同的包中添加以下条目:

javax.xml.bind.context.factory = org.eclipse.persistence.jaxb.JAXBContextFactory

产量

以下是运行演示代码的输出:

ANDROID 0

IOS 4

欲获得更多信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216028.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午12:44
下一篇 2026年3月18日 下午12:44


相关推荐

  • 漫谈原生JS添加元素的两种方法

    漫谈原生JS添加元素的两种方法漫谈原生JS添加元素常规方法常规方法是首先创建一个目标元素并赋值给某个变量,但是元素里面内容较多,需要innerHTML赋值,将含有内容的变量赋值给目标元素的变量,最后,将这个目标元素的变量通过appendChild把节点放到指定位置。varli=document.createElement(“li”);varspan=document.createElement(“span”);li.appendChild(span);varelement=document.querySe

    2022年6月22日
    91
  • Linux ubuntu查看端口是否打开

    Linux ubuntu查看端口是否打开工具 原料 Linux 系统百度经验 jingyan baidu com 方法 步骤 1 首先我们先打开要查看端口的 Linux 的命令操作界面 如图所示 以 Ubuntu 系统为例 步骤阅读 2 然后为了能够获得更高的权限 查看所有端口 这里切换 root 用户登录步骤阅读 3 第一个方法就是使用 lsof i 端口号命令行 以 80 为例的 如图所示步骤阅读 4 如果没有任何输出则说明没有开启该端口号 为了方便测试 我这里检测一

    2026年3月16日
    2
  • Flash动画制作视频教程

    Flash动画制作视频教程Flash是由macromedia公司推出的交互式矢量图和Web动画的标准,由Adobe公司收购。做Flash动画的人被称之为闪客。网页设计者使用Flash创作出既漂亮又可改变尺寸的导航界面以及其他奇特的效果。Flash的前身是FutureWave公司的FutureSplash,是世界上第一个商用的二维矢量动画软件,用于设计和编辑Flash文档。1996年11月,美国Macromedi

    2022年6月1日
    31
  • PhotoShop中画圆角矩形最简单方法(图文并茂)!

    PhotoShop中画圆角矩形最简单方法(图文并茂)!

    2022年2月4日
    66
  • LLM Agent提效揭秘4:多智能体协作工作流深度剖析

    LLM Agent提效揭秘4:多智能体协作工作流深度剖析

    2026年3月16日
    2
  • eclipse导入java文件_eclipse如何导入java项目文件

    eclipse导入java文件_eclipse如何导入java项目文件平时下载到项目时 希望能够导入到 eclipse 中使用 但有些项目不能直接导入 需要做转换 打开源文件目录 查询如下 如果目录中包含 pom xml 文件 则说明该项目由 Maven 构建的 参考以下如何导入 Maven 项目 如果目录中包含 build xml 文件 那么说明这个项目是由 ant 构建的 参考以下如何导入 ant 项目 如果目录中包含 classpath project 文件 那么说明这个项目由 ecli

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号