gpt4 book ai didi

java - 在 Java 中使用 GSON 验证 JSON

转载 作者:搜寻专家 更新时间:2023-10-31 20:19:53 25 4
gpt4 key购买 nike

我正在使用 GSON 验证 JSON 格式的字符串:

String json="{'hashkey':{'calculatedHMAC':'f7b5addd27a221b216068cddb9abf1f06b3c0e1c','secretkey':'12345'},operation':'read','attributes':['name','id'],'otid':'12'}";
Gson gson=new Gson();
Response resp = new Response();
RequestParameters para = null;
try{
para = gson.fromJson(json, RequestParameters.class);
}catch(Exception e){
System.out.println("invalid json format");
}

它做得很好,但是当我删除下面的引号时,我已经从 hashkey 中删除了:

"{hashkey':{'calculatedHMAC':'f7b5addd27a221b216068cddb9abf1f06b3c0e1c','secretkey':'12345'},operation':'read','attributes':['name','id'],'otid':'12'}"

它仍在将其验证为正确的 JSON 格式,并且没有抛出任何异常,也没有进入 catch 主体。它这样做的任何原因?我将如何解决这个问题?

请求参数类:

public class RequestParameters {
HashKey hashkey;
String operation;
int count;
int otid;
String[] attributes;

}

最佳答案

现在它会将第二个引号视为哈希键的一部分。看看下面从对象返回的 json 字符串。

我在 jsonlint 测试了它

{
"hashkey\u0027": {
"calculatedHMAC": "f7b5addd27a221b216068cddb9abf1f06b3c0e1c",
"secretkey": "12345"
},
"operation\u0027": "read",
"attributes": [
"name",
"id"
],
"otid": "12"
}

示例代码:

String json = "{hashkey':{'calculatedHMAC':'f7b5addd27a221b216068cddb9abf1f06b3c0e1c','secretkey':'12345'},operation':'read','attributes':['name','id'],'otid':'12'}";
Gson gson = new Gson();
try {
Object o = gson.fromJson(json, Object.class);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(o));
} catch (Exception e) {
System.out.println("invalid json format");
}

Is there quote needed around JSON string against keys?

Read more...

关于java - 在 Java 中使用 GSON 验证 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com