无法从值中包含双引号的Json创建Java对象

无法从值中包含双引号的Json创建Java对象,java,json,gson,Java,Json,Gson,我有同样的疑问。我的JSON如下所示 String json="{ "credentials": { "password": "Password"123", "emailAddress": "skylineadmin@gmail.com" }, "clientTimeMs": 1582006455421, "callerRole": 0 }" key=密码,值为“password”123“它包含“(双引号)。。我无法从这个json创建java对象,因为它是无效的 Gson gson = new

我有同样的疑问。我的JSON如下所示

String json="{ "credentials": { "password": "Password"123", "emailAddress": "skylineadmin@gmail.com" }, "clientTimeMs": 1582006455421, "callerRole": 0 }"
key=密码,值为“password”123“它包含“(双引号)。。我无法从这个json创建java对象,因为它是无效的

Gson gson = new Gson(); 
gson.fromJson(json, PasswordResetDetails.java);

上面的代码段不工作

如果您这样做是为了学习/测试,那么您所需要做的就是使用以下方法对双引号进行转义:

String json="{ "credentials": { "password": "Password\"123", "emailAddress": "skylineadmin@gmail.com" }, "clientTimeMs": 1582006455421, "callerRole": 0 }"
如果这是一个真实的场景,那么我建议更改源代码,以确保它提供有效的JSON


有无数种方法可以检查您的JSON是否有效(JSON linting),这里是。

您好!您所拥有的不是有效的JSON。您的源代码应该只提供有效的JSON。这是否回答了您的问题?这是真实的情景。从重置密码屏幕,用户可以提供任何密码。比如说密码“123这个带双引号的密码字符串与我前面提到的json中的其他详细信息一起出现在服务器端。那么有没有通用的解决方案呢。因为用户可以提供任何密码。使用双引号无法创建java对象。即使我在执行此java行字符串后使用escape chanracter,它的形式类似于“password”:“password”123“…这再次无法使用gson.fromJson创建java对象…那么我的建议是在源代码上修复此行为。如果输入未被清除,则意味着您也有遭受其他类型攻击的风险。