java – 优化json构建的类型检查/强制转换
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 优化json构建的类型检查/强制转换,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2544字,纯文字阅读大概需要4分钟。
内容图文
我正在开发一个项目,我们使用javax.json来处理我们的请求/响应.我们使用的实现是org.glassfish.json.困扰我的是它不支持添加/写入Object.所以我创建了方法,我必须检查每个类型,这个实现支持.像这样的东西:
private static void addTypeSafeValue(JsonObjectBuilder jsonBuilder, String key, Object value) {
if (value instanceof String) {
jsonBuilder.add(key, value.toString());
} else if (value instanceof Integer) {
jsonBuilder.add(key, (int) value);
} else if (value instanceof Boolean) {
jsonBuilder.add(key, (boolean) value);
} else if (value instanceof Long) {
jsonBuilder.add(key, (long) value);
} else if (value instanceof Double) {
jsonBuilder.add(key, (double) value);
} else if (value instanceof Uri) {
jsonBuilder.add(key, ((Uri) value).toString());
} else if (value instanceof Map) {
jsonBuilder.add(key, convertToJsonObject((Map<String, ?>) value));
} else if (value instanceof Collection) {
jsonBuilder.add(key, convertToJsonArray((Collection<?>) value));
} else if (value instanceof JsonObject) {
jsonBuilder.add(key, (JsonObject) value);
} else if (value instanceof JsonArray) {
jsonBuilder.add(key, (JsonArray) value);
} else {
throw new IllegalArgumentException("Not implemented for: " + value.getClass());
}
}
我想知道,如果有任何方法来优化此代码.
另一部分是我想为消费者传递JsonObjectBuilder或JsonGenerator,以便削减一些重复的检查/代码.
解决方法:
TL; DR它很好.
关于优化,请注意您将所有内容添加到构建器(我猜)构建,而您可能希望通过线路发送字符串甚至字节[].
最近,我在某处读到,Gson通常花费更多时间复制字符串而不是反射.所以我不在乎.
What’s bugging me is that it does not support adding/writing of Object.
如果他们愿意,那么他们必须像你一样提供一个不完整的解决方案(这对你来说很好,但不适用于图书馆)或使其可扩展,然后杰克逊,Gson和许多其他人已经.
I am wondering, if there is any way to optimize this code.
我可以想到两种方式并且不推荐:
1:查找一些分组,以便案例数量变小.您可以测试值instanceof Number,然后进一步分支.然而,几乎没有任何收益,因为数字肯定比其余的情况更常见.
2:创建地图< Class,Consumer< Object>>为你的案件填充转换器,并使用类似的东西
map.get(value.getClass()).accept(value);
当案件数量巨大或需要可扩展性时,这可能是一个很好的解决方案.对于你的10个案例,它很可能会导致大幅放缓.
The other part is that I want to pass JsonObjectBuilder or JsonGenerator for consumer in order to cut some duplicated checks/code.
我不认为,这是值得的. JsonObjectBuilder和JsonGenerator是两个不相关的接口.它们都有一堆方法,它们是相关的,但命名不同,并不总是相互对应.所以你需要为它们编写包装器或者在你的问题中重复代码.最后,无论如何,你得到了一些重复的代码.
这将是相当丑陋的.我建议你看看像Gson或Jackson这样更强大的工具.
内容总结
以上是互联网集市为您收集整理的java – 优化json构建的类型检查/强制转换全部内容,希望文章能够帮你解决java – 优化json构建的类型检查/强制转换所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。