gpt4 book ai didi

java - 字符串化 Java 对象在 JSON.parse Javascript 中抛出错误

转载 作者:行者123 更新时间:2023-12-03 10:26:19 25 4
gpt4 key购买 nike

我定义了一个电子邮件类,其中包含以下详细信息:
电子邮件:

String name;
String subject;
List<String> attachment;
String jsonContent;
....

在上面的类中,jsonContent 变量加载了一个字符串化的 json 对象。
创建电子邮件对象后,我将对整个电子邮件对象进行字符串化并发送给客户端。

我需要在客户端解析电子邮件对象并将其呈现在 UI 中。
但它会引发客户端中电子邮件对象的解析错误,即

JSON.parse(emailString);

因为 jsonContent 字段内有双引号。
这是一个字符串化具有已字符串化的 jsonContent 变量的 JAVA 对象的问题。

解决此问题的一种方法是将 jsonContent 变量定义为对象而不是字符串。还有其他解决方法吗?

电子邮件 JSON 示例:

    {
"id": "e4682ec0-a7c3-4f4d-abcd-f404f5fdb1eb",
"entityType": "email",
"subject": "Presentation 1",
"from": "aaa <a@a.com>",
"to": [
"undisclosed-recipients:;"
],
"cc": [],
"bcc": [
"jack.porter@forwardaccelerator.com"
],
"recievedDate": 1423101398000,
"recievedDateString": "Wed, 4 Feb 2015 12:26:38 -0800",
"bodyText": " Please find the link to my recent presentation",
"jsonContent": "{
"typeOfMail": "NormalMail",
"normalMail": {
"mailType": "NormalMail",
"paragraphs": [
"Pleasefindthelinktomyrecentpresentation"
]
}
}"
}

最佳答案

您需要转义大量字符串才能将内容作为字符串获取。

要将 json 对象存储在 json 对象中,您需要对其进行转义。所以

  "jsonContent": "{
"typeOfMail": "NormalMail",
"normalMail": {
"mailType": "NormalMail",
"paragraphs": [
"Pleasefindthelinktomyrecentpresentation"
]
}
}"

变成了

"jsonContent": "{\"typeOfMail\":\"NormalMail\",\"normalMail\":{\"mailType\":\"NormalMail\",\"paragraphs\":[\“请查找我最近的演示文稿的链接\”]}}“

现在,如果您想在 java 中编译它,如果您将其手动键入为 Java 字符串(执行片段),那么它应该是这样的

var json =  {
"id": "e4682ec0-a7c3-4f4d-abcd-f404f5fdb1eb",
"entityType": "email",
"subject": "Presentation 1",
"from": "aaa <a@a.com>",
"to": [
"undisclosed-recipients:;"
],
"cc": [],
"bcc": [
"jack.porter@forwardaccelerator.com"
],
"recievedDate": 1423101398000,
"recievedDateString": "Wed, 4 Feb 2015 12:26:38 -0800",
"bodyText": " Please find the link to my recent presentation",
"jsonContent": "{\"typeOfMail\": \"NormalMail\",\"normalMail\":{\"mailType\":\"NormalMail\",\"paragraphs\":[\"Pleasefindthelinktomyrecentpresentation\"]}}"
}
console.log("This is the json object having a string with json");
console.log(json);
console.log("This is it parsed as string");
var x = {hello:JSON.stringify(json)};
console.log(JSON.stringify(x).substring(10,JSON.stringify(x).length-2));
document.getElementById('content').textContent = JSON.stringify(x).substring(10,JSON.stringify(x).length-2);
<div id="content"></div>

这就是发送的 JSON 文件/请求答案的样子

{
"id": "e4682ec0-a7c3-4f4d-abcd-f404f5fdb1eb",
"entityType": "email",
"subject": "Presentation 1",
"from": "aaa <a@a.com>",
"to": [
"undisclosed-recipients:;"
],
"cc": [],
"bcc": [
"jack.porter@forwardaccelerator.com"
],
"recievedDate": 1423101398000,
"recievedDateString": "Wed, 4 Feb 2015 12:26:38 -0800",
"bodyText": " Please find the link to my recent presentation",
"jsonContent": "{\"typeOfMail\": \"NormalMail\",\"normalMail\":{\"mailType\":\"NormalMail\",\"paragraphs\":[\"Pleasefindthelinktomyrecentpresentation\"]}}"
}

现在我不明白为什么你想要 jsonContent 作为字符串,因为你可以将它作为对象传递(删除它周围的引号,这样你就得到了

"jsonContent": {
"typeOfMail": "NormalMail",
"normalMail": {
"mailType": "NormalMail",
"paragraphs": [
"Pleasefindthelinktomyrecentpresentation"
]
}
}

如果您需要它作为 JavaScript 中的字符串,您只需执行 JSON.stringify(json.jsonContent); 即可更轻松地获得相同的结果。

关于java - 字符串化 Java 对象在 JSON.parse Javascript 中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29383605/

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