当前位置: 首页 > 面试题库 >

Json-Json的Java对象

薛华奥
2023-03-14
问题内容

我对Json并不陌生,我的目标是从Java
bean创建下面的Json输出。我应该如何构造Java对象?我应该将MyResult类以及User和Result作为子类吗?我可以为此使用什么Json库?

“MyResult” {
    “AccountID”: “12345”,
    "User" {
        "Name": "blah blah",
        "Email": “blah@blah.com”,
     },
     "Result" {
         "Course": “blah”,
         "Score": “10.0”
     }
 }

问题答案:

注意: 我是 EclipseLink
JAXB(MOXy)的
负责人,并且是
JAXB(JSR-222)
专家组的成员。

我应该如何构造Java对象?

下面是您的对象模型的外观。MOXy的JSON绑定利用JAXB批注将域模型映射到JSON,因此我也将它们包括在内。JAXB实现具有映射字段/属性名称的默认规则,但是由于您的文档与默认名称不同,因此必须对每个字段进行注释。

我的结果

package forum11001458;

import javax.xml.bind.annotation.*;

@XmlRootElement(name="MyResult")
public class MyResult {

    @XmlElement(name="AccountID")
    private String accountID;

    @XmlElement(name="User")
    private User user;

    @XmlElement(name="Result")
    private Result result;

}

用户

package forum11001458;

import javax.xml.bind.annotation.XmlElement;

public class User {

    @XmlElement(name="Name")
    private String name;

    @XmlElement(name="Email")
    private String email;

}

结果

package forum11001458;

import javax.xml.bind.annotation.XmlElement;

public class Result {

    @XmlElement(name="Course")
    private String course;

    @XmlElement(name="Score")
    private String score;

}

我可以为此使用什么Json库?

下面是如何使用MOXy进行JSON绑定的方法:

jaxb.properties

要将MOXy用作JAXB提供程序,您需要jaxb.properties在与域模型相同的程序包中包含一个带有以下条目的名为的文件:

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

演示版

请注意,MOXy的JSON绑定如何不需要任何编译时依赖性。Java SE 6中提供了所有必需的API。如果使用Java SE
5,则可以添加必需的支持API。

package forum11001458;

import java.io.File;
import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(MyResult.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setProperty("eclipselink.media-type", "application/json");
        File json = new File("src/forum11001458/input.json");
        Object myResult = unmarshaller.unmarshal(json);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty("eclipselink.media-type", "application/json");
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(myResult, System.out);
    }

}

input.json /输出

{
   "MyResult" : {
      "AccountID" : "12345",
      "User" : {
         "Name" : "blah blah",
         "Email" : "blah@blah.com"
      },
      "Result" : {
         "Course" : "blah",
         "Score" : "10.0"
      }
   }
}


 类似资料:
  • 问题内容: 我正在尝试将我的Json载入我的班级 我正在努力让GSON使用以下代码将用户详细信息加载到上述Java对象中 问题答案: JSON无效。集合不能由表示。它代表一个 对象 。集合/数组用逗号分隔的对象表示。 JSON如下所示: (请注意,我在最深层的嵌套朋友中又添加了一个朋友,以便您了解如何在集合中指定多个对象) 给定此JSON,您的包装器类应如下所示: 然后将其转换为 并吸引用户使用

  • 问题内容: 我正在尝试反序列化以下字符串,对于Java来说我还是有些陌生,我无法在我的一生中使用它。我现在仅尝试在对象中解码两个字符串。我的JSON和Java类如下。我得到的结果变量确定。 还有我下面的java类 请原谅我缺乏描述,但是我确信代码会有所帮助。JSON已在其他应用程序中使用,因此不可更改。 谢谢! 问题答案: 这是一些不错的JSON教程,可以帮助您。 GSON JSON格式 带有源代

  • 我有json格式,我想用JSONObject和JSONArray在java代码中创建它,但是我没有得到正确格式的输出。JSON格式如下所示。 我如何用java创建这个json对象,因为我想用这个对象创建使用NVD3的多条形图。如有任何帮助,不胜感激!

  • 我想创建一个字符串,如下所示。 我们如何创建这个字符串使用

  • 问题内容: 我试图从JSON数组中获取每个JSON对象。我通过HTTP发布获得此数据。 我知道我的数据是什么样的: 我的示例代码和结构如下所示: 我不确定如何遍历JSON数组并获取JSON对象,然后仅使用JSON对象。 问题答案: 试试这个作为您的结构, 您的名称不正确,顶层名称也不正确。解码为a之后,您可以遍历切片以获取每个切片

  • 问题内容: 我有JSON对象,如下所示: 在Java中,我想解析上述json对象并将值存储在arraylist中。 我正在寻找一些代码来实现这一目标。 问题答案: 我假设你想将interestKeys存储在列表中。 使用库: