fastjson 对象中包含集合,集合中又包含集合,转换出错

chhqkbe1  于 2022-12-31  发布在  其他
关注(0)|答案(3)|浏览(261)

该情况似乎只发生在对象是手动new出来时,如果是从Json字符串转化为包含两层集合的对象,再将该对象转化为Json字符串,则不会发生下面的情况。
示例如下(提交之后格式乱了):

{
    "wars": [
        {
            "name": "name",  
            "items": [
                {
                    "itemName": "0x00000"
                }
            ]
        }, 
        {
            "name": "name1", 
            "items": [
                {
                    **"$ref": "$.wars[0].items[0]"**
                }
            ]
        }
    ]
}
ar7v8xwq

ar7v8xwq1#

报错信息能提供一下么?

ibps3vxo

ibps3vxo2#

抱歉,今天才看到你的信息。
当时遇到这个情况是并没有报错,只是转化的结果错了。
由于时间太久,我也忘了做笔记,这个错误今天下午我复现时并没有复现出来。

czq61nw1

czq61nw13#

我最近也遇到这个问题:当实体A中有一个集合,集合有两个以上的元素(B实体),B中包含实体C和D等,使用JSON.toJSONString(A)时,序列化结果错误,无报错。结果为:集合中第一个元素完全正常,从第二个元素开始,C, D元素中只有一个元素能正确序列化。结果如下:

{
    "code": 1,
    "message": "success",
    "data": [
        {
            "app": {
                "appKey": "ESG3mLLV",
                "code": "san",
                "createdTime": "2019-07-08T11:02:38",
                "description": "",
                "id": 8,
                "name": "test-Android",
                "os": "ANDROID",
                "updatedTime": "2019-07-08T11:02:38"
            },
            "appName": "test-Android",
            "channel": {
                "created_time": "2019-07-29T11:15:38",
                "id": 8,
                "name": "UC信息流",
                "updated_time": "2019-07-29T11:15:36"
            },
            "type": 1
        },
        {
            "app": {
                "$ref": "$.data[0].app"
            },
            "appName": "test-Android",
            "channel": {
                "created_time": "2019-07-08T10:53:04",
                "id": 6,
                "name": "今日头条",
                "updated_time": "2019-07-08T10:53:04"
            },
            "type": 1
        },
        {
            "app": {
                "$ref": "$.data[0].app"
            },
            "appName": "test-Android",
            "channel": {
                "created_time": "2019-07-08T10:53:04",
                "id": 5,
                "name": "爱奇艺",
                "updated_time": "2019-07-08T10:53:04"
            },
            "type": 1
        },
        {
            "app": {
                "$ref": "$.data[0].app"
            },
            "appName": "test-Android",
            "channel": {
                "created_time": "2019-07-15T16:35:28",
                "id": 7,
                "name": "百度ocpc",
                "updated_time": "2019-07-15T16:35:25"
            },
            "type": 1
        }
    ]
}

相关问题