【问题标题】:turn string data into json format [duplicate]将字符串数据转换为json格式[重复]
【发布时间】: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、名称和图标链接),对吧?
  • 或将 JSON 返回到您的 PHP,您必须更改内容类型:请参阅:stackoverflow.com/questions/267546/…,但您必须在 {} 中插入此字符串,例如:@987654325 @

标签: javascript php json


【解决方案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 中):

  1. 将您的字符串括在 { 中
  2. 属性的名称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,其中包含您的字符串内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2021-10-04
    • 2013-02-04
    相关资源
    最近更新 更多