如何解码 JSON 字符串

How to decode a JSON string?

本文关键字:JSON 字符串 解码 何解码      更新时间:2023-09-26

在服务器端,我有 2 个哈希编码成 JSON 字符串吗

my $j = JSON->new;
$j = $j->utf8;
my $data;
$data->{users}  = $j->encode('%user_result);
$data->{owners} = $j->encode('%owner_result);
$json_string    = to_json($data);
print $cgi->header(-type => "application/json", -charset => "utf-8");
print $json_string;

在客户端,我有

$(document).ready(function(){
    $('form').live('submit', function(){
    $.ajax({
        type: "GET",
        url: "/cgi-bin/ajax_confirm.pl",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: $(this).serialize(),
        error: function(XMLHttpRequest, textStatus, errorThrown) { 
        $('div#create_result').text("responseText: " + XMLHttpRequest.responseText +
                        ", textStatus: " + textStatus +
                        ", errorThrown: " + errorThrown);
        $('div#create_result').addClass("error");
        },
        success: function(result){
        if (result.error) {
            $('div#create_result').text("result.error: " + result.error);
            $('div#create_result').addClass("error");
        } else { // perl script says everything is okay
            var users  = result.users;
            var owners = result.owners;
...

users包含

{"ss":"Sandra Schlichting","fn":"Full name"}

但它不是一个数组。当我使用$.each()时,它一次具有特征。

问题

如何将其转换为数组,以便我可以使用

function makeTable(users) {
    var result = '<table>'n<tr><td>Initials</td><td>Full Name</td></tr>'n';
    $.each(users, function(index, value) {
        result += '<tr><td>' + index + '</td><td>' + value + '</td></tr>'n';
    });
    result += '</table>';
    return (result);
}

应该产生

Initials    Full Name
ss  Sandra Schlichting
fn  Full name

你应该使用 jQuery.getJSON() 如 http://api.jquery.com/jQuery.getJSON/中所述。

如果你想这样做

,还有 $.parseJSON() 方法可以将字符串解析为 json。

你不需要把它变成一个数组。根据jQuery.each()文档,它同时接受数组或对象,JSON是JavaScript的对象文字表示法的子集。

编辑:这是一个例子:http://jsfiddle.net/pedrocorreia/s5UrZ/2/

您可以使用 Douglas crockford 创建的 JSON 解析器:
https://github.com/douglascrockford/JSON-js

在页面中包含json2.js,您可以执行以下操作:

var object = JSON.parse(string);

然后,您可以将其用作数组。

您可以使用

in 语句

var index = 0;
for(user in users){
  result += '<tr><td>' + index + '</td><td>' + user['fn'] + '</td></tr>'n';
index++;
}