在我的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"
}
]
}
所以我发现了这个问题,在存储我的响应之前,我正在进行预打印,所以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库可用于处理