当前位置: 首页 > 知识库问答 >
问题:

如何修复部分JSON解析?

游鸣
2023-03-14

在我的Android项目中,我使用了reverfit2作为API调用和GSON作为转换器。将json转换为POJO并遵循在同一项目的50+API中也使用的常用方法。

但是,在这种特定的情况下,一些项被解析并分配给变量,而其他项则不是。

如何解决这种部分解析?

public class ProductLookup {
    @SerializedName("atsQty")
    @Expose
    private String atsQty;
    @SerializedName("combID")
    @Expose
    private String combID;
    @SerializedName("defaultPickLock")
    @Expose
    private String defaultPickLock;
    @SerializedName("lookupProductPickingLocation")
    @Expose
    private ArrayList<ProductPickingLocation> productPickingLocations = new ArrayList<>();
    @SerializedName("productID")
    @Expose
    private String productID;
    @SerializedName("productName")
    @Expose
    private String productName;
    @SerializedName("totalQty")
    @Expose
    private String totalQty;
    @SerializedName("unitName")
    @Expose
    private String unitName;
    @SerializedName("upc")
    @Expose
    private String upc;
    @SerializedName("vendorName")
    @Expose
    private String vendorName;
    @SerializedName("whName")
    @Expose
    private String whName;

//getter setters 
}
 {
            "atsQty": 133,
            "combID": 0,
            "defaultPickLock": "FA1",
            "lookupProductPickingLocation": [
                {
                    "availQty": 22,
                    "isdefault": true,
                    "lookupProductBatch": [],
                    "lookupProductLotSerial": [],
                    "pickLockID": 26,
                    "pickingLocationName": "FA1",
                    "prodPickLockID": 77,
                    "totalQty": 27
                },
                {
                    "availQty": 100,
                    "isdefault": false,
                    "lookupProductBatch": [],
                    "lookupProductLotSerial": [],
                    "pickLockID": 27,
                    "pickingLocationName": "FA2",
                    "prodPickLockID": 121,
                    "totalQty": 100
                },
                {
                    "availQty": 6,
                    "isdefault": false,
                    "lookupProductBatch": [],
                    "lookupProductLotSerial": [],
                    "pickLockID": 28,
                    "pickingLocationName": "FB1",
                    "prodPickLockID": 131,
                    "totalQty": 6
                }
            ],
            "productID": 1065,
            "productName": "Arm & Hammer Baking Soda",
            "totalQty": 133,
            "unitName": "",
            "upc": "5454546",
            "vendorName": "Vandelay Industries",
            "whName": "Warehouse 2"
        }

共有1个答案

刘浩思
2023-03-14

我在这里看到的第一个错误

@SerializedName("lookupProductPickingLocation")
@Expose
private ArrayList<ProductPickingLocation> productPickingLocations = new ArrayList<>();

使用@expose时,实际上是在使用ProductPickingLocations。您可以在这里查看@expose vs@serializedname

使用以下任何一种

@SerializedName("lookupProductPickingLocation")
private ArrayList<ProductPickingLocation> productPickingLocations = new ArrayList<>();
@Expose
private ArrayList<ProductPickingLocation> lookupProductPickingLocation = new ArrayList<>();

第二,

@SerializedName("atsQty")
@Expose
private String atsQty;

您定义为String,但在Postman中可以清楚地看到它是整数。我认为这就是问题所在。您需要检查所有定义。

 类似资料:
  • 我在我的存储库中做了一些工作,发现一个文件有本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做Git等效的 使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站 (

  • 问题内容: 我有以下json: 基于的更改。 知道这一点,有没有办法使该字段保持字符串?这个想法是使用调用传递的正确处理程序,然后在其中使用正确的struct 解析字符串。 例: 先感谢您。 问题答案: 使用json.RawMessage获取字段的原始JSON文本: 像这样使用它: 在操场上跑。

  • 问题内容: 我正在尝试运行脚本,但始终收到此错误: 我该如何解决? 问题答案: 我遇到了同样的问题,我在同一文件夹中创建了一个文件,名为requests.py。因此,它实际上是在导入该文件,而不是实际上在请求您使用pip安装。然后,我创建的名为logging.py的文件出现了另一个问题。我都重命名了,问题解决了。听起来像是同样的问题…

  • 我正在玩由节点的模块实现的AES 256。js,以评估我是否可以将其用于特定的数据保护功能,我正在计划将其作为我正在设计的应用程序的一部分。 我试图验证一些加密的任意明文的解密,但我无法获得原始明文和解密结果相匹配,这意味着我的加密、解密或两者都有问题。 据我所知,我最好选择一个随机初始化向量(IV),我使用了-证据表明(留档没有说太多)它需要128位。我显然还需要CBC模式,这是有意义的,因为我

  • 当我做一个,我得到我的分支: 当我尝试推送git时,我得到: 当我检查分支时,它不在那里: 我该如何解决这个问题?

  • 我尝试安装< code>Lighttpd,但我得到了以下错误: 正在读取包列表…错误!E: 无法分析包文件/var/lib/dpkg/status(1)E:无法分析或打开包列表或状态文件。 因此,我在互联网上搜索并尝试删除和重新加载包裹列表: @ rasp:~ $ sudo RM/var/lib/apt/lists/*-VF removed '/var/lib/apt/lists/archive