当前位置: 首页 > 知识库问答 >
问题:

使用GSON将JSON转换为Java时抛出错误

权承
2023-03-14

在我的spark代码中有gson,它存储在字符串RDD中,我将其转换为键和值。

JavaPairRDD<String, ArrayList<Guid>> docPairRDD = docRDD.mapToPair(SparkCustomFunctions.generateKeyValuePair());

    /**
     * @return new Tuple with key is of type String and value is of type ArrayList<DocId>
     */
    public static PairFunction<String, String, ArrayList<DocId>> generateKeyValuePair() {
        return new PairFunction<String, String, ArrayList<DocId>>(){

        private static final long serialVersionUID = 9086064488812696200L;
        public Tuple2<String, ArrayList<DocId>> call(String t)
                    throws Exception {

            GsonBuilder gson = new GsonBuilder();
            Document tempObj = gson.create().fromJson(t, Document.class);

        return new Tuple2<String, ArrayList<DocId>>(tempObj.getKey(),(ArrayList<DocId>) tempObj.getEventFields());
            }
        };
    }
}

(1).

public class Document implements Serializable {
private static final long serialVersionUID = 1L;
     @SerializedName("key")
    String key;
     @SerializedName("eventFields")
    List<DocId> eventFields= new ArrayList<DocId>();

    public Document (String key, List<DocId> eventFields) {
        super();
        this.key = key;
        this.eventFields= eventFields;
    }

Its setter and getter
}

(2).

public class DocId implements Serializable {
    private static final long serialVersionUID = 1L;
    String DocId = "";
    String cType = "";
    String events;
    public DocId(String docId, String cType, String eType){
        super();
        this.DocId = docId;
        this.cType = cType;
        this.events = eType;
    }
their setters and getters
}

但我收到了以下错误消息。谷歌。格森。JsonSyntaxException:java。伊奥。EOFEException:com第1行第2列的输入结束。谷歌。格森。格森。com上的fromJson(Gson.java:813)。谷歌。格森。格森。com上的fromJson(Gson.java:768)。谷歌。格森。格森。com上的fromJson(Gson.java:717)。谷歌。格森。格森。fromJson(Gson.java:689)

我是gsona和spark的新手。所以请让我知道我做错了什么?

我将以下类型的json存储到RDD中

{
  "key": "01key",
  "eventFields": [
    {
      "guid": "abc12",
      "contentType": "dummyContent",
      "events": "dummyEvents"
    }
  ]
}

共有1个答案

连昊天
2023-03-14

所以我发现了这个问题,在存储我的响应之前,我正在进行预打印,所以json会被拆分为多行,在阅读这个json时,我假设每行都是完整的json,所以我得到了错误。我删除了预打印,我的代码开始正常工作。

 类似资料:
  • 问题内容: 我正在从返回JSON格式数据的服务器请求数据。发出请求时,将HashMap转换为JSON并不困难,但另一种方式似乎有些棘手。JSON响应如下所示: 哪种方法最容易访问此数据?我正在使用GSON模块。 问题答案:

  • 我使用的是名为Gson的Google JSON API,在设置Java类以便使用方法时遇到了困难。 从JSON数据中,我知道有一个包含所有数据的对象数组。让我感到困惑的是外部标记。我知道我必须构造一个表示对象的类,但是我是否也必须创建一个表示的类,因为它包含? 目前,我有一个名为的文件,其中包含以下内容: 我只包括了我计划使用的变量。上面的JSON数据包含在一个名为的字符串中,这就是我在main方

  • 问题内容: 假设我有json字串 现在我有一个班级用户 现在如何将上述json字符串转换为用户类对象 问题答案: 试试这个:

  • 问题内容: 我正在从返回JSON格式数据的服务器请求数据。发出请求时,将HashMap转换为JSON并不难,但另一种方式似乎有些棘手。JSON响应如下所示: 哪种方法最容易访问此数据?我正在使用GSON模块。 问题答案: 干得好:

  • 我有一个类,它用这个函数反序列化泛型的ArrayList,就像这个线程的第一个答案中描述的:Java抽象类函数泛型类型 Eclipse要求我强制转换TypeToken,结果如下(sinde fromJson的函数需要一个类型,而不是一个TypeToken) 结果我得到了这个错误: 在gson用户手册中,他们告诉您这是调用函数的正确方式 我看不出我做错了什么(如果它是一个有效的答案,为什么我会得到这

  • 本文向大家介绍如何使用GSON库将Java对象转换为JSON?,包括了如何使用GSON库将Java对象转换为JSON?的使用技巧和注意事项,需要的朋友参考一下 JSON或JavaScript Object Notation是一种轻量级的基于文本的开放标准,旨在用于人类可读的数据交换。JSON使用的约定是程序员已知的,包括C,C ++,Java,Python,Perl等。 有几种Java库可用于处理