- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经使用 Java 编写了套接字通信服务器,并使用套接字连接编写了一个带有 AS3 的 AIR 程序。通过套接字连接的通信是通过 JSON 序列化完成的。
有时在套接字上串起很长的 JSON,AS3 代码会提示存在 JSON 解析错误。
我以 end 字符串结尾的每个 JSON 字符串让程序知道,它不是消息的结尾,所以这不是 AIR 程序读取的问题部分消息。
该错误仅发生在非常长的json 字符串上,例如长度为78031 的字符串。 JSON 序列化有什么限制吗?
最佳答案
我遇到了同样的问题。问题出在 Flash 应用程序从套接字读取数据时。
要点是,即使服务器没有发送所有数据,Flash ProgressEvent.SOCKET_DATA 事件也会触发,并且会留下一些东西(尤其是当数据很大且连接很慢时)。所以像 {"key":"value"} 这样的东西分为两个(或更多)部分,比如:{"key":"val 和 ue"。此外,有时您可能会在一条消息中收到多个连接的 JSON,例如 {"json1key":"value"}{"json2key":"value"} - 内置的 Flash JSON 解析器也无法处理这些。
为了解决这个问题,我建议您修改 Flash 应用程序中的 SocketData 处理程序,为接收到的字符串添加缓存。像这样:
// declaring vars
private var _socket:Socket;
private var _cache: String = "";
// adding EventListener
_socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
private function onSocketData(e: Event):void
{
// take the incoming data from socket
var fromServer: ByteArray = new ByteArray;
while (_socket.bytesAvailable)
{
_socket.readBytes(fromServer);
}
var receivedToString: String = fromServer.toString();
_cache += receivedToString;
if (receivedToString.length == 0) return; // nothing to parse
// convert that long string to the Vector of JSONs
// here is very small and not fail-safe alghoritm of detecting separate JSONs in one long String
var jsonPart: String = "";
var jsonVector: Vector.<String> = new Vector.<String>;
var bracketsCount: int = 0;
var endOfLastJson: int = 0;
for (var i: int = 0; i < _cache.length; i++)
{
if (_cache.charAt(i) == "{") bracketsCount += 1;
if (bracketsCount > 0) jsonPart = jsonPart.concat(_cache.charAt(i));
if (_cache.charAt(i) == "}")
{
bracketsCount -= 1;
if (bracketsCount == 0)
{
jsonVector.push(jsonPart);
jsonPart = "";
endOfLastJson = i;
}
}
}
// removing part that isn't needed anymore
if (jsonVector.length > 0)
{
_cache = _cache.substr(endOfLastJson + 1);
}
for each (var part: String in jsonVector)
{
trace("RECEIVED: " + part); // voila! here is the full received JSON
}
}
关于java - 最大 as3 adobe JSON 字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211368/
我是 Adobe InDesign Server 的新手,我很难找到一个好的厨房水槽应用程序。我从 SDK 获得的所有示例似乎都部分起作用。我想要做的就是从服务器端使用 InDesign 的母版页
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我有一个带有完整设计页面的 xd adobe 链接。我想在 adobe xd windows 桌面应用程序中打开这些设计页面,但我不能。如何在 adobe xd windows 桌面应用程序中打开此链
activeDocument.fitArtboardToSelectedArt() 调用此命令时,AI 在 AI 5.1/6 32 位和 64 位版本上崩溃。我可以使用菜单中的命令。有没有人遇到过这个
activeDocument.fitArtboardToSelectedArt() 调用此命令时,AI 在 AI 5.1/6 32 位和 64 位版本上崩溃。我可以使用菜单中的命令。有没有人遇到过这个
如果可以,应该在哪里配置? 从文档中,所有提到的忽略文件都是关于从 SVN 提交 中排除 .vlt,但我们面临相反的问题 — 我们想排除来自 VLT 提交 的文件系统上的文件——例如.DS_Store
我正在 AdobeXD 中制作移动下拉菜单。 除了我的主页,我还有另外两个画板;菜单本身和一个按钮。 我想要做的就是触发菜单向下滑动,并将退出按钮覆盖在首先触发效果的按钮顶部。 它会覆盖退出按钮,
Javascript 的 setTimeout函数是window的一个方法目的。此对象在 ExtendScript 中不存在,因此不可用于为 Adobe InDesign 或 Illustrato
有人可能会争论它是否与摄影有关,但由于它与 DNG 格式有关,所以在这里问。 我正在尝试构建一个 Adobe DNG SDK,以便我能够将许多不同的相机原始格式转换为 *.dng 格式。 我为 h
我正在 Adobe CQ5.5 中开发一个自定义容器组件,我想要一个自定义消息作为占位符,而不是默认的“将组件或 Assets 拖到此处”。 到目前为止,我发现我必须添加 cq:emptyText
我想在导入 XML 时使用 Internet URL 将图像加载到 InDesign 模板中。 这可能吗?或者图片是否需要存储在本地机器上? 最佳答案 这可能吗?不需要。镜像需要存储在本地机器上吗?是
在 Adobe Edge Animate 中,如何获取 Symbol 的当前时间? 我混合使用 jQuery 和 Adobe Edge 代码来编程我的页面。我想检查一个符号的时间是否停留在第一
如果我将 adobe xd 文档放置在本地计算机上的任何位置。 示例:C:\doc\adobe-xd\brand\brand.xd 打开它并运行插件 是否可以检索 adobe xd 文档位置。 P.S
我正在使用 AEM 6.1 和 Maven 来管理依赖项。我可以看到 bundle com.adobe.granite.poi 版本 2.0.0 随 AEM 实例一起提供。但我似乎无法在 Adob
我正在使用 adobe labs magic selection 工具,但它要求用户进行 adobe 登录。有什么办法可以不让用户登录,但仍然使用 magic selection 工具?我听说过这个,
我们有 Adobe PDF writer,希望能够使用它而不是 ghostscript。 SaveAs() 函数是否锁定在 ghostscript 中,如果是,我该如何使用 adobe pdf w
我想知道 Adobe Experience Manager (AEM) 6.2/6.3 使用哪个版本的 Apache Sling?我在各种网站上进行了搜索,包括 Adobe 自己的文档,但似乎
还在努力探索动作剧本。有没有办法访问Android手机的接近感应器?想要使用传感器的输出关闭探测器。找到了里查多松/接近感应器(https://github.com/richardolsson/pro
我对 Day Cq5 还很陌生。我的对话框中有一个复选框,我想在用户选择或取消选择它时在我的 jsp 中检索它的 bool 值。请帮忙 最佳答案 如果要从组件的 JSP 中检索值,请执行以下操作: b
http://helpx.adobe.com/experience-manager/kb/HowToDefineComponentListDynamically.html 我在上面尝试过,但由于文章的
我是一名优秀的程序员,十分优秀!