将字符串数据转换为json格式[重复]

Posted

技术标签:

【中文标题】将字符串数据转换为json格式[重复]【英文标题】:turn string data into json format [duplicate] 【发布时间】:2014-02-18 00:18:11 【问题描述】:
note:
 "category_id":"1","name":"Notes","icon":"images\/note.png",
quote:
 "category_id":"2","name":"Quotes","icon":"images\/quote.png",
project:
 "category_id":"3","name":"Projects","icon":"images\/project.png",
skill:
 "category_id":"4","name":"Skills","icon":"images\/skill.png"

这就是我的控制台中显示的内容。我使用json_decode 进行查询,并与字符串连接,我相信这是问题的原因。

那么如何将字符串数据转成json格式呢?

【问题讨论】:

我不明白问题本身。 @Tigran 假设代码块是字符串,将它们转换为对象 好吧,你不能转换成一个对象。您可以使用参数创建对象,其中一些可以来自您的字符串。如我所见,您需要 4 个对象,每个对象都有(id、名称和图标链接),对吧? 看看这里 - ***.com/questions/4935632/… 或将 JSON 返回到您的 php,您必须更改内容类型:请参阅:***.com/questions/267546/…,但您必须在 中插入此字符串,例如:@987654325 @ 【参考方案1】:

如果这是字符串,那么我建议将其包装在 ... 中并使用 `JSON.parse。即:

var json = JSON.parse('' + string + '');

当然,您需要将 JSON lib helper 添加到您的页面https://github.com/douglascrockford/JSON-js

【讨论】:

不能用php做吗?我不想包含额外的东西。 +1 for add... 但我认为@user3189052 在 JS 字符串解析之前还有其他问题。 使用:json_encode()VALID json 字符串。 是的,你可以使用$string = ''.$string.'';,然后将字符串发送到客户端。 不仅...他必须在属性名称(技能、报价、注释、项目)中添加双引号。【参考方案2】:

你可以使用JSON.parse(string)这会从你的字符串中返回一个JSON

【讨论】:

在发布此答案之前您是否尝试过这样做?【参考方案3】:

我认为你的问题是 PHP 而不是 javascript

您已经解码了一个 JSON 字符串,以便在 PHP 对象中使用 json_decode 对其进行转换...但是现在您必须以格式良好的 JSON 字符串取回它。

但首先你的字符串是无效的,对于 JSON 标准(在 PHP 中):

    将您的字符串括在

    属性的名称note、quote、project、skill必须封装在"中 ,你的新字符串:

    "note":"category_id":"1","name":"Notes","icon":"images/note.png", "quote":"category_id":"2","name":"Quotes","icon":"images/quote.png", "project""category_id":"3","name":"Projects","icon":"images/project.png", "skill":"category_id":"4","name":"Skills","icon":"images/skill.png"

现在看看这个 PHP 中 JSON 编码的例子:

$yourString = '"note":"category_id":"1","name":"Notes","icon":"images\/note.png","quote":"category_id":"2","name":"Quotes","icon":"images\/quote.png","project":"category_id":"3","name":"Projects","icon":"images\/project.png","skill":"category_id":"4","name":"Skills","icon":"images\/skill.png"'; 
$JSON_FOR_PHP = json_decode($yourString);
$JSON_FOR_JS = json_encode($JSON_FOR_PHP);

/* response: */
echo "JSON for PHP (associative Array):<br><br>";
var_dump($JSON_FOR_PHP);
echo"<br><br>";
echo "JSON for JAVASCRIPT (JSON string add content type: application/json):<br><br>";
echo $JSON_FOR_JS;

回复:

JSON for PHP (associative Array):

object(stdClass)#1 (4)  ["note"]=> object(stdClass)#2 (3)  ["category_id"]=> string(1) "1" ["name"]=> string(5) "Notes" ["icon"]=> string(15) "images/note.png"  ["quote"]=> object(stdClass)#3 (3)  ["category_id"]=> string(1) "2" ["name"]=> string(6) "Quotes" ["icon"]=> string(16) "images/quote.png"  ["project"]=> object(stdClass)#4 (3)  ["category_id"]=> string(1) "3" ["name"]=> string(8) "Projects" ["icon"]=> string(18) "images/project.png"  ["skill"]=> object(stdClass)#5 (3)  ["category_id"]=> string(1) "4" ["name"]=> string(6) "Skills" ["icon"]=> string(16) "images/skill.png"  

JSON for JAVASCRIPT (JSON string add content type: text/json):

"note":"category_id":"1","name":"Notes","icon":"images\/note.png","quote":"category_id":"2","name":"Quotes","icon":"images\/quote.png","project":"category_id":"3","name":"Projects","icon":"images\/project.png","skill":"category_id":"4","name":"Skills","icon":"images\/skill.png"

如果您只回显 $JSON_FOR_JS 并将内容类型更改为 application/json,您会得到一个有效的 JSON 字符串,您可以在 javascript 中使用 JSON.parse() 进行解析:

header('Content-Type: application/json');
echo $JSON_FOR_JS;

或直接在 JS 脚本中回显(html 页面或 .js 文件中没有脚本标签):

var js_json = JSON.parse();

现在在 javascript 中,您有一个对象 js_json,其中包含您的字符串内容。

【讨论】:

以上是关于将字符串数据转换为json格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将JSON格式的字符串转换为Java中的JSON对象[重复]

如何将数据框转换为 JSON [重复]

如何将 json 转换为 pyspark 数据帧(更快的实现)[重复]

无法将 groupby 数据集转换为 pandas 中的 json [重复]

python 使用eval() 可以将json格式的数据,转换为原始数据

将JSON字符串转换为日期[重复]