【问题标题】:JSON root elements and encodingJSON 根元素和编码
【发布时间】:2018-11-26 13:20:19
【问题描述】:

我有一个从 Java 反序列化的 JSON,如下所示:

Java

jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(graphDTO);

JSON

  "accounts" : [ {
    "name" : "1009427721",
    "value" : 16850.79,
    "children" : [ {
      "name" : "BITCOIN EARNINGS",
      "value" : 10734.24,
      "children" : [ {
        "name" : "2017",
        "value" : 1037.82,
        "children" : [ {
          "name" : "07",
          "value" : 518.91
        } ]
      } ]
    },  ...

反序列化的 Java POJO 是:

public class GraphDTO {

    private Set<Account> accounts = new HashSet<>();

    public Set<Account> getAccounts() {
        return accounts;
    }
}

问题

  1. 如何从生成的 JSON(第一行)中删除“帐户”?
  2. 将 JSON 表单注入 JavaScript,我得到一个编码表单,如: var data = { &amp;#034;accounts&amp;#034; : [ { ... 我怎样才能避免这种情况?

【问题讨论】:

  • 你是如何在 javascript 中解析 JSON 的?你能提供任何代码吗?
  • 是的:&lt;script&gt; var data = &lt;c:out value="${graphDTOJSON}"/&gt;; ... &lt;/script&gt;

标签: javascript java json


【解决方案1】:

我认为避免accounts 是不可能的,但你可以这样做:

jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(graphDTO.getAccounts());

我们正在等待您在 javascript 中解析 JSON...

【讨论】:

  • 谢谢,您的方法为我提供了我正在寻找的结构 :) 对于 JavaScript 中的使用,我这样做:&lt;script&gt; var data = &lt;c:out value="${graphDTOJSON}"/&gt;; ... &lt;/script&gt; 被 sunburst char(docs.anychart.com/Basic_Charts/Sunburst_Chart) 使用
  • 你为什么不改用JSON.parse(graphDTOJSON)
  • Parse 将返回一个对象。用 JSON.stringify 试过你的方法,不工作。但现在通过var data = ${graphDTOJSON}; 工作。
【解决方案2】:

得到它的工作如下:

  1. 应用 Mohicane 的答案:

    mapper.writerWithDefaultPrettyPrinter().writeValueAsString(graphDTO.getAccounts())

  2. 将 JSON 从 Java 注入到 JavaScript(在 JSP 中):

    var data = ${graphDTOJSON};

非常感谢!

【讨论】:

  • 如果您认为我的答案不错,是否可以将其标记为正确的答案?
猜你喜欢
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
相关资源
最近更新 更多