【问题标题】:Parse JSON without a particular standard structure into a Map or Java Object将没有特定标准结构的 JSON 解析为 Map 或 Java 对象
【发布时间】:2012-05-01 23:07:25
【问题描述】:

如果我可以将 json 映射到 Java 对象,那就太好了,但是结构很奇怪,对于我要解析的所有 json,它都是不同的。例如类别和主题可以有不同。我如何将它映射到 Java 对象或任何其他建议?

"name":"url", "categories": { "249":{"catID":"249","score":33.43533451973102}, "34":{"catID":"34","score":3.0000000447034836}, .,.,so on }, "topics":{ "DSLR":{"weight":1.6690950917579026,"noun":1}, "illuminated":{"weight":7.6470197510265105,"noun":0}, . .so on }}

【问题讨论】:

  • 这是 GSON 库的输出:topics/{DSLR={weight=1.6690950917579026, noun=1},Illuminated={weight=7.6470197510265105, noun=0}, } 我现在如何表示它在一个 JAVA 对象中,考虑多个类别和主题 source/high categories/{2_249={categoryID=249, taxID=2, score=33.43533451973102},...}

标签: java json


【解决方案1】:

您至少可以指望 JSON 表示对于每种类型的响应/对象映射是一致的吗?如果是这样,您可以使用 Google GSON 库,并创建一个自定义反序列化器来处理非标准 JSON 表示。这是项目的链接:

http://code.google.com/p/google-gson/

以及如何创建自定义序列化器/反序列化器的用户指南:

https://sites.google.com/site/gson/gson-user-guide#TOC-Custom-Serialization-and-Deserialization

【讨论】:

  • 我尝试了你的建议并实现了一种 GSON 方法来解析 JSON 这是输出主题/{DSLR={weight=1.6690950917579026, noun=1},Illuminated={weight=7.6470197510265105,noun=0 }, } source/high categories/{2_249={categoryID=249, taxID=2, score=33.43533451973102},...} 我现在如何在 JAVA 对象中表示它?
【解决方案2】:

有一个库: org.json 。要从字符串中解析 JSONObject,你说:

JSONObject jo = new JSONObject(string);

但是,如果字符串表示数组而不是映射,则使用:

JSONArray ja = new JSONArray(string);

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多