- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个用例,其中我有一个预转义的有效字符串作为 JsonElement 返回。但是,内部使用 JsonWriter 的 JsonElement 会解析字符串以尝试进行字符串转义/字符替换。
私有(private) void string() 方法
出于性能原因,我想避免这样做,因为我的 String 元素是预转义的。
我搜索了一下,发现这个用例很相似: https://code.google.com/p/google-gson/issues/detail?id=239
虽然上述链接中的解决方案适用于 gson1.5,但 Escaper 类已在最新的 gson (2.2.2) 中删除。
我如何扩展 JsonElement(或其内部的 JsonWriter),从而避免特定类型的 JsonWriter 字符串替换开销?
最佳答案
这似乎可行。
OutputStream rawStream = ...
JsonWriter writer = new JsonWriter(new OutputStreamWriter(rawStream, "UTF-8"));
... /* normal gson/json usage */
// about to write object including a base 64 big byte[]
/* don't using binding API for images, too big, too slow */
String b64 = Base64.encodeToString(blob, Base64.NO_WRAP);
writer.beginObject();
writer.flush();
/* gson.JsonWriter doesn't understand the string is b64 encoded,
and hence doesn't need escaping, so lets use an ASCII encoder
for a little while
*/
OutputStreamWriter asciiWriter = new OutputStreamWriter(rawStream, "ASCII");
asciiWriter.write(
String.format("\"id\": \"%d\", \"raw\": \"", param.id)
);
asciiWriter.write(b64);
asciiWriter.write("\" ");
asciiWriter.flush();
writer.endObject();
虽然不是“在 API 中”,但鉴于此应该会继续工作
请注意,我已经对此进行了测试,它有效,并且比使用 JsonWriter.value(String value) 快得多。
关于java - Gson 2.2.2 Json 为 JsonElement 自定义 JsonWriter 以避免转义字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15486137/
我想用以下内容写入 MySQL 日期列值 jsonWriter.value((java.sql.Date) resultSet.getObject(column)); 但是好像这是不可能的。它说lon
我想将几个 JSON 对象写入一个 txt 文件。为了获得更好的 View ,我希望每个对象都位于不同的行中,但我的问题是:我不知道如何添加新行或分隔这些对象。这是我的代码: JsonO
我试图在收到 wifi 信息后调用 JsonWriter 方法向 test.json 添加一些内容,但是在成功写入文件后,文件仍然是空的。这是代码。 接收时 @Override pu
我正在尝试将大对象保存为 JSON。我使用 Gson,但出现与内存(Java 堆空间)相关的异常。我读到我应该使用序列化。但我不知道如何做到最后。我正在尝试创建一个 JsonWriter,但我有一个异
我正在尝试创建一个以某种方式更改请求的中间件。我能够阅读它并更改内容,但我无法弄清楚如何正确设置流编写器来创建新的正文。当我调用 normalized.WriteToAsync(jsonWriter)
我想通过这个函数写入文件,但总是返回异常NESTING PROBLEM。我的错误在哪里?异常出现在这行代码中: writer.name("code").value(s); 请帮帮我 这是电话: use
我已经使用 gson 的 JsonWriter 编写了一个程序来创建 json 文件,创建 json 文件效果很好,但它给了我格式化的 json 不是最好的看到我也希望能够轻松地手动编辑此文件 示例:
尝试使用基于 jsonbeans 的 com.badlogic.gdx.utils.Json 将对象写入 json 时,出现 StackOverflowError 错误。 。该对象及其引用的所有对象仅
我一直致力于通过关注 this sample 来实现这个自定义 JSON 编写器 我正在覆盖 WriteValue 方法,这样我就不会打印 json 的值,而是打印 Type.ToString() 并
gson 是一个很棒的库 - 它运行良好。有时我有自定义要求,并且可以制作和注册 TypeAdapters 和 TypeAdaptorFactories - 这也很有效。 然而,让我感到困惑的是如何委
遵循 http://www.smartjava.org/content/first-steps-rest-spray-and-scala 的教程,有一些意外的错误消息。到底是怎么回事?我是否通过 im
标题说明了一切。我看到它(及其相应的末端)吐出以下内容...... new Foo( ) ...但我不明白 new 在反序列化时实际上做了什么。文档只是说它写了一个 Json 构造函数,但不是 Jso
有人可以指导我如何在没有任何预定义对象的情况下将 GSON 中的 JsonWriter 转换为 JsonObject。 JsonWriter writer = new JsonWriter(new
我的项目中有 struts2-json-plugin 库,我想使用 JSONWriter获取 JSON 字符串并将其放入 JavaScript 仅用于一个参数(不是所有操作的 JSON 结果)只有一个
我正在使用谷歌 Gson用于处理 JSON 字符串的库。我需要将此字符串保存在文件中(保存/加载操作)。 特别是,当我有一个包含一组参数(整数、字符串、基本类型数组等)的类 MyClass 时,例如
这个问题在这里已经有了答案: Why will Gson pretty-print to the console, but not the file? (1 个回答) 关闭 3 年前。 我很难使用
我有一个用例,其中我有一个预转义的有效字符串作为 JsonElement 返回。但是,内部使用 JsonWriter 的 JsonElement 会解析字符串以尝试进行字符串转义/字符替换。 参见 h
从我的 dss 服务请求 json 响应时出现以下错误。 {"Fault":{"faultcode":"soapenv:Server","faultstring":"Error while writi
我将 Struts 从 2.3.7 升级到 2.3.33(使用 Maven)。虽然使用版本 2.3.7 我的 Web 应用程序可以正常工作,但在升级到 2.3.33 后,我在尝试访问包含对服务器的 A
我是一名优秀的程序员,十分优秀!