DOJO:以某种格式从RESTful API获取JSON结果,以及接下来要做什么来解析结果并将其放入变量中

DOJO: Getting JSON result from RESTful API in certain format, and what to do next to parse the result and put it into variables?

本文关键字:结果 什么 变量 格式 RESTful API DOJO JSON 获取 接下来      更新时间:2023-09-26

我有一个关于JSON处理的问题(将在DOJO dgrid中显示)

快速intermezzo:使用XAMPP 3.2.1和DOJO 1.10以及由"Slim"制成的RESTful API

这是我的JSON结果(通过使用dojo/request/xhrGET方法,将自定义API密钥作为授权头来完成):我在这里添加了缩进,这样更容易阅读(但实时情况不同)

{"error":false,
 "theworkers":[{"code":"C00001","name":"ALEXANDER"},
               {"code":"C00002","name":"BONAPARTE"},
               {"code":"C00003","name":"CUST"}
              ]
}

我已经搜索了一段时间。。。仍然找不到任何好的线索,尝试使用JSON.parse,但在firebug中收到错误消息:

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

这是我触发错误的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Testing!</title>
</head>
<body>
    <button id="startButton"> Start! </button>
    <div id="output"> Output here: </br></div>
    <!-- The DOJO Script Goes From Here -->
    <script src="dojo/dojo.js"
            data-dojo-config="async: 1, parseOnLoad: 1"
    >
    </script>
    <script>
    require(["dojo/request/xhr", 
             "dojo/dom", 
             "dojo/dom-construct", 
             "dojo/json", 
             "dojo/on", 
             "dojo/domReady!"
            ],
            function(xhr, dom, domConst, JSON, on){
              on(dom.byId("startButton"), "click", function(){
                var authKey = "ed75ae5af71ff50b0d3fa859fe102f1e";  
                domConst.place("<p>Requesting...</p>", "output");
                xhr("restinpride/v1/theworkers", {
                  headers: {
                        "Authorization": authKey
                      },  
                  handleAs: "json"
                }).then(function(data){
                    var res = JSON.parse(data);
                    domConst.place("<p>Results are: </p>" + res  + "#" , "output");
                });
              });
            });
    </script>
</body>
</html>

如果这有点太多了,那么首先我想问:

A) 如何将"error":false放入名为"isErrorVar"的布尔变量中?

B) 如何放置{"code":"C00001"、"name":"ALEXANDER"}等(BONAPARTE,CUST)转换为一个对象(或数组),以便在将来使用dgrid时使用作为名为"theWorkersObj"的变量

提前感谢

How Lame。。。这是由于我的知识贫乏

答案是:

var res = JSON.parse(JSON.stringify(data));
var isError = res.error;
var theWorkersObj = res.theworkers;

这里真正的问题是,首先字符串化数据(这是xhr请求的结果)否则,代码将无法工作。。。

因此,接下来我们可以使用访问变量,如:

domConst.place("<p>The error status is: </p>" + isError  + 
               " And The 2nd worker name is " + theWorkersObj[1].name, "output");

结果将是:"错误状态为:false,第二个工作人员名称为BONAPARTE"

仅此而已:D