java - 使用 GSON 将 JSON 字符串转为 Java 对象

标签 java json parsing gson

我正在尝试将 json 解析为 java。

根据 jsonlint.com,我有以下字符串是有效的 json

private final static String LOC_JSON = 
         "["
        +"{"
        +"  \"lat1\": 39.737567,"
        +"  \"lat2\": 32.7801399,"
        +"  \"long1\": -104.98471790000002,"
        +"  \"long2\": -96.80045109999998"
        +"},"
        +"  ["
        +"      {"
        +"          \"lat\": {"
        +"              \"b\": 38.88368709500021,"
        +"              \"d\": 40.620468491667026"
        +"          },"
        +"          \"long\": {"
        +"          \"b\": -105.75306170749764,"
        +"          \"d\": -104.675854661387"
        +"          }"
        +"      }"
        +"  ]"
        +"]";

我试图将它解析为一个对象,但出现以下错误。 “应为 BEGIN_OBJECT 但在第 1 行第 2 列为 BEGIN_ARRAY”

            Gson gson = new Gson();
        BoxSearch b = gson.fromJson( LOC_JSON, BoxSearch.class ); 

BoxSearch 由这个组成。

private Number lat1;
private Number lat2;
private Number long1;
private Number long2;
private Boxes[] boxes;

Boxes 是 Latitude 对象和 Longitude 对象,它们的定义相同。

private String b;
private String d;

我可以将更高级别的属性(lat1、lat2、long1 和 long2)解析为更简单的 BoxSearch 对象,该对象仅具有这 4 个属性。当 json 和对象更复杂时,麻烦就来了。甚至可以做我正在尝试的事情吗?

我希望我提供了足够的信息以获得一些帮助。如果需要,我很乐意提供更多信息甚至测试项目。我将其作为 junit 测试运行。

谢谢。

最佳答案

Gson gson = new Gson();
gson.fromJson(jsonStr,YourClass.class);

非常简单。

关于java - 使用 GSON 将 JSON 字符串转为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723158/

相关文章:

.net - 使用 .NET VB 或 C# 中的 acrobat.tlb 从 .pdf 中提取完整的带连字符的单词

java - struts中foreach的使用方法

java - Hibernate:如何将 B 是 A 的属性进行一对一映射?

python - 使用 JSON 数据填充 SQLite 表,得到 : sqlite3. OperationalError: near "x": syntax error

arrays - 复杂对象的 json 数组在发布时始终为 null

java - 如何在 Java 中使用 java.regex.Matcher 解析日志文件

java - 如何在Android中通过不同的图像点击播放不同的视频?

Java JLabel 多行高度

javascript - 来自 localstorage 的 JSON 无法在 php 中解码

arrays - GO 中的 : Parsing byte array of excel data using https://github. com/tealeg/xlsx 库