开发者社区> 问答> 正文

从文件创建对象-JAVA

我有一个问题,我应该将一个对象传递给mapper(hadoop的map reduce),因此我尝试将对象放入这样的json中:

Object2ObjectOpenHashMap<OpenBitSet, CombinationHelper> level1 = ...;
 String level1path="pathFile.txt";

 GsonBuilder gsonBuilder = new GsonBuilder();
 Gson gson = gsonBuilder.create();
 String JsonLevel1 = gson.toJson(level1);


 BufferedWriter writerContainTuples = new BufferedWriter(new FileWriter(level1path));
 writerContainTuples.write(JsonLevel1);
 writerContainTuples.close();

在mapper中,我通常以这种方式从文件中获取对象:

public void map(Object ke, Text val, Context context) throws IOException, InterruptedException {


        level1 = new Gson().fromJson(val.toString(), new TypeToken<Object2ObjectOpenHashMap<OpenBitSet, CombinationHelper>>(){}.getType());
        .
        .
        .
         }
        }

但是当我运行程序时,它给了我这个错误:

java.lang.Exception: org.apache.hadoop.shaded.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 3

所以我不知道如果java这样给我这个错误,我该如何传递对象。我已经尝试过可序列化,但是在映射器阶段,它给了我几乎相同的错误。

展开
收起
几许相思几点泪 2019-12-10 19:30:53 575 0
0 条回答
写回答
取消 提交回答
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载