小编Car*_*ten的帖子

如何处理 Json.Net 解析中的错误

我正在使用 Json.Net 进行 Json 反序列化。有时我读取的 Json 字符串不正确(我无法修复,因为我没有生成它)。特别是,在一个特定的地方,应该有一个字符串,有时会有一个序列化的对象。毫不奇怪,Json.Net 然后抱怨在它期望一个字符串的地方找到一个对象。

我发现我可以通过使用Errorin拦截它,JsonSerializerSettings并通过设置ErrorContext.Handled. 但我还想做更多。如果我可以查看序列化对象,我就可以弄清楚字符串应该是什么,并且理论上可以提供正确的答案。在实践中,我无法弄清楚我们该怎么做。特别是,在错误处理程序中:

  • 如何访问解析器出错的字符串(请注意,如果ErrorContext.Handled设置了解析器可以成功继续,因此它可以正确确定问题字符串的开始和结束)?
  • 我如何向解析器提供正确的字符串,或者如何访问当前解析的对象,以便我可以手动设置值?

[编辑] 根据要求提供一个简化示例:

我要解析的不正确的 Json 字符串:

{
    "id": 2623,
    "name": {
        "a": 39,
        "b": 0.49053320637463277,
        "c": "cai5z+A=",
        "name": "22"
    },
    "children": [
        {
            "id": 3742,
            "name": {
                "a": 37,
                "b": 0.19319664789046936,
                "c": "Me/KKPY=",
                "name": "50"
            },
            "children": [
                {
                    "id": 1551,
                    "name": {
                        "a": 47,
                        "b": 0.6935373953047849,
                        "c": "qkGkMwY=",
                        "name": "9"
                    },
                    "children": []
                },
                {
                    "id": 4087,
                    "name": {
                        "a": …
Run Code Online (Sandbox Code Playgroud)

c# parsing json json.net

5
推荐指数
1
解决办法
4853
查看次数

Android AWS s3 SDK 下载抛出“套接字已关闭”异常或提前终止

我正在尝试使用 AWS Android SDK 1.0.4 或 1.0.3 从 S3 下载对象。

这是我的代码:

AmazonS3Client client = getConnection(userCredentials);
S3Object obj = client.getObject(workspaceName, objectName);
ObjectMetadata meta = obj.getObjectMetadata();
long size = meta.getContentLength();
logger.info("S3 object length: "+size);
InputStream is = new BufferedInputStream(obj.getObjectContent());
byte[] fragmentBytes = IOUtils.toByteArray(is);
logger.info("Read bytes: "+ fragmentBytes.length);
Run Code Online (Sandbox Code Playgroud)

这有时(但很少)有效。大多数情况下,要么抛出“java.net.SocketException:Socket is close”,要么不报告错误,但只读取对象的一部分。

请注意, 应该BufferedInputStream不是必需的,IOUtils.toByteArray(...)并且存在或不存在都没有区别。

在调试器中逐行单步执行代码时似乎不会出现该问题。

我的 Android 2.3.3 设备和 3.2 设备上会发生这种情况。它通过 WiFi 和 3G 进行。

有任何想法吗?

ps> 对象大约有250k大

android amazon-s3

4
推荐指数
1
解决办法
2934
查看次数

Java String.getBytes("UTF-8")是否保留了lexicograhpical顺序?

如果我有一个字典排序的Java字符串列表[s1,s2,s3,s4, ...., sn],然后使用UTF-8编码将每个字符串转换为字节数组bx = sx.getBytes("UTF-8"),字节数组的列表是否[b1,b2,b3,...bn]也按字典排序?

java arrays sorting utf-8 lexicographic

4
推荐指数
1
解决办法
7274
查看次数

flask_admin 更改 inline_models 行为

我想更改一些现有的使用flask_admin. 其中一种视图inline_models(ClassName, Options)声明模式一起使用。内联类有一个文本字段。我想通过以下方式更改 flask_admin 默认行为:

  • 我想让文本字段只读。即仍然显示它,但阻止用户更改现有内容。
  • 我不想让用户删除内联类的实例,即我想摆脱“删除?” 每个条目旁边的复选框。
  • 我想用一些自定义 JavaScript 覆盖默认的“添加项目”按钮行为。

我做了一些谷歌搜索,但任何看起来有潜力的东西看起来也很重要。我希望有一些合理直接的方法来实现这一目标。

您的帮助将不胜感激。

python flask flask-admin

3
推荐指数
1
解决办法
1624
查看次数