问题标签 [flexjson]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1158 浏览

java - 在 Java / Android 中使用 Flexjson 将 JSONObject 映射到列表

我目前正在尝试使用 Flexjson 反序列化 JSON 字符串并将其映射到我的 Android 应用程序的对象模型。该应用程序是一种具有多个供应商的库,其中可以包含一些目录,其中包含更多目录和文档。json 是从我没有影响的 Web 服务中获取的,看起来像这样:

因此,每个供应商、目录、文档都由 JSONObject 表示,所有子目录和文档都在 JSONArray 中。到目前为止,Flexjson 和以下反序列化代码一切正常:

我确实有一个具有List<Vendor>. 每个供应商都有一个List<Catalog>和一个List<Document>

但不幸的是,如果目录仅包含单个文档或目录仅包含一个目录,则 Web 服务会将 JSONArrays 绑定到简单的 JSONObjects。所以这种情况下的 json 看起来像这样:

现在 Flexjson 不知道如何反序列化,我最终得到一个 library.vendorX.getDocument() 是 aList<HashMap>而不是List<Document>. 一个想法是明确告诉 Flexjson 如何处理这种情况,但我不知道从哪里开始。另一种方法是手动解析初始 json 并将此类 JSONObjects 替换为适当的 JSONArray。但我认为这种方式并不好走,因为图书馆可能很深。

我希望你能在这里提供一些指导。

0 投票
2 回答
2023 浏览

java - Hibernate 和 FlexJSON 的延迟初始化错误

尝试使用 FlexJSON 序列化 JPA/Hibernate 实体时遇到一个非常奇怪的错误。对象本身并不花哨;只是其他对象之间的字段和关系。

通过阅读其他(稀疏)帖子并查看代码,这似乎是延迟初始化的问题。这种情况在极少数情况下会重复发生,但这些情况是可重复的。我的猜测是因为它似乎是有状态的,它与数据有关,但我真的不知道为什么数据会导致这种异常,特别是因为它是如此罕见。

0 投票
2 回答
3483 浏览

json - FlexJSON 无法反序列化日期

我正在使用 FlexJSON,并且无法Dateint. 我正在尝试像这样使用 JSONDeserializer:

的值为json

除非出生日期(dob键)值在 1969 年 12 月 7 日和 1970 年 1 月 25 日之间(或 -2138400000 到 2095200000 毫秒),否则所有内容都会正确解析,然后 FlexJSON 会抛出此错误:

我不确定这是怎么发生的,因为new Date(21600000)评估为Thu Jan 01 00:00:00 CST 1970.

有没有人遇到过这个?



更新#1


因此,似乎发生此错误是因为 JSONDeserializer 无法处理保存为 1969 年 12 月 7 日至 1970 年 1 月 25 日范围内的 Unix TimeStamp 的日期。该范围之外的任何其他日期都被接受并且也是一个 Unix 时间戳。

我认为我不需要使用.use()或创建自定义 Transformer 来实现自定义 ObjectFactory,因为其他 Unix TimeStamps 工作不在失败日期范围内。



更新#2


我尝试使用以下方法实现transformer序列化以将日期从 Unix TimeStamp 更改为日期格式的字符串:

这完全按照它应该的方式工作,但不是在反序列化时。我仍然遇到同样的错误:

0 投票
0 回答
470 浏览

java - 如何使用 FlexJSON 将部分 JSON 字符串反序列化为对象?

我正在尝试将 JSON 字符串的一部分序列化为一个对象。JSON 字符串如下所示:

我只需要 JSON 字符串的用户部分,它对应于以下类的对象:

我目前尝试反序列化的方式如下:

use方法提供了一个路径和一个类,但是无论我尝试什么路径,反序列化后UserForm的内容都是空的。我尝试过:“用户”、“成功用户”、“值.成功用户”。

有谁知道我做错了什么以及如何解决?我意识到还有其他解决方案,比如 Jackson,但这是已经大量使用 FlexJSON 的大型代码库的一部分。背景:我正在尝试为作为项目一部分的 API 编写单元测试。

0 投票
0 回答
1165 浏览

java - 使用作为整数值接收的 flexjson 反序列化枚举

我们正在创建一个 JSON REST 客户端应用程序,该应用程序必须与用 C# 编写的服务进行通信。FlexJson 库可以轻松解决大多数问题,例如日期差异等。

但有一件事没有:作为整数发送的枚举值,这是从服务接收的值,并且必须映射到它们的 Java Enum 值。

Java枚举是可以的,我们当然可以将整数转换为枚举,只要值存在。但是我们没有成功获取到 Flexjson 来转换值。

其中一个枚举称为FormState

我们编写了一个自定义的 Transformer,我们称之为OurEnumTransformer,它扩展了 AbstractTransformer 并实现了 ObjectFactory。在反序列化时,我们添加.use(Enum.class, OurEnumTransformer),如果不这样做,我们会收到如下错误:

不知道如何将 4 转换为 FormState 的枚举常量

这是有道理的,因为它是一个整数而不是枚举值的名称

但是我们添加了.use(...)我们不断收到反序列化错误:

FormState 缺少无参数构造函数。Flexjson 将实例化任何受保护的、私有的或公共的无参数构造函数。

但它确实有一个私有的无参数构造函数。

另一件事是在 OurEnumTransformer 中设置的断点永远不会被命中。

那么谁能帮助我为什么.use(Enum.class, OurEnumTransformer)不适用于具有整数值的枚举?

下面的枚举和OurEnumTransformeris的代码

和工厂

最后调用代码:

在最后一个代码块中,jsonData 是一个有效的 JSON 字符串,而 enumTransformer 是 OurEnumTransformer 实例。

最后一点,此代码中使用的 dateTransformer 确实可以发挥作用。

任何帮助表示赞赏。

0 投票
1 回答
591 浏览

java - 使用 FlexJSON 反序列化多对一关系

我正在向我的 Web 应用程序(使用 Spring)添加 RESTful 支持,因此我可以执行这样的 CRUD 操作:阅读有关参与者的信息(JSONSerialize):

或者创建一个新的参与者(JSONDeserialize)

但问题是,我不需要知道 mainFunction 对象的所有字段来创建参与者我只需要知道唯一的代码。对于序列化,我可以使用:

我得到以下json:

对于反序列化我不知道。这个要求似乎很普遍,所以我想在论坛中提问。有任何想法吗?

总而言之,有一个父对象具有对子对象的引用(多对一)。如果我向父母提供孩子的所有信息,一切正常。但是等一下,孩子的身份证应该足以保护父母的安全。我尝试只用孩子的 ID 保存父母,然后我得到这个异常:

org.hibernate.TransientPropertyValueException:对象引用了一个未保存的瞬态实例 - 在刷新之前保存瞬态实例

有什么想法吗?

奥古斯丁

2013 年 1 月 27 日更新:看起来问题来自 Hibernate。假设我们有产品和类别。关系是产品具有对类别的引用(多对一关系)。给定先前保存在数据库中的类别。您不能创建产品,只需提供类别的 ID 即可创建产品。即使 Hibernate 不会查看版本来创建产品,您也将需要该版本。见下文:

那将失败。但是,如果您取消注释类别的版本,将创建产品。此外,Hibernate 将对数据库进行额外的查询以获取该类别。

这里有两个问题:

  1. 为什么 Hibernate 需要字段版本,即使它最终看起来不是它?
  2. 为什么 Hibernate 会额外查询类别?

你的意见?

0 投票
2 回答
1268 浏览

actionscript-3 - 创建一个 JSON 文件并保存到磁盘

如何为任何对象创建 JSON 文件并将其保存在磁盘上。几天后找回来?

0 投票
1 回答
432 浏览

android - FlexJson 反序列化器在混淆代码后不起作用

FlexJson 在深度序列化方面工作得很好,我在对象内部有对象..但是我看到在用 proguard 混淆我的构建后,我的反序列化类只返回 String 中的类对象..或者我必须在 local.properties 或项目中更改的任何内容。特性

是的,使用控制台和 ANT 我正在更新我的代码,其中 (android update ....--library) 链接到我的库代码文件夹的路径。这里 flexjson 只是我的项目 /libs 文件夹中的一个 jar。如果问题是没有引用库请帮助如何做到这一点?

否则任何其他问题的帮助!

在我的 proguard.cfg 我写了这个

它没有抛出 ClassNotFoundException 但序列化、深度序列化、反序列化不起作用

我已经混淆了我的代码,一切正常运行,除了这个

0 投票
2 回答
344 浏览

android - 在 Android 中反序列化 Json

在我的后端,我有一个类用户,它有多个旅行。这些旅行有多个用户。这是一个循环引用。

我在我的休息服务中使用此代码来序列化用户对象:

在我的 android 应用程序中,我执行以下操作:

循环引用异常怎么办?还有另一种方法可以使这项工作吗?

0 投票
1 回答
1404 浏览

java - 使用 flexjson 序列化对象

我正在尝试使用flexjson库。但是在我的对象中我必须使用: com.google.api.client.util.DateTime它没有没有参数的构造函数。我总是收到NoSuchMethodException消息:Flexjson will instantiate any protected, private, or public no-arg constructor.我有资源并试图用它做点什么,这里是代码:

clazz.getDeclaredConstructor()由于缺少空构造函数而引发异常。假设这些签名,找到构造函数的最佳方法是什么:

DateTime(long timestamp)?

有人在这个库中遇到过这种问题吗?也许你可以建议使用其他的。我正在使用它来序列化由Google Cloud Endpoints. 也许我可以用不同的方法做到这一点?