删除JSON响应中的某些字符

时间:2014-10-23 03:30:21

标签: javascript json string

我有一个JSON响应,但我的问题是有些字符与我想要的JSON响应无关。所以我将JSON响应传递给JavaScript变量并查看JSON字符串。那是在底部。

----------- JSON响应------------

{
   "readyState":4,
   "responseText":"<?xml version=\"1.0\"encoding=\"utf-8\"?>\r\n<string>{\"kind\":\"analytics#gaData\",\"id\":\"https://www.googleapis.com/analytics/v3/data/ga?ids=ga:76546294&dimensions=ga:userType&metrics=ga:users&start-date=2014-10-01&end-date=2014-10-23&max-results=10\",\"query\":{\"start-date\":\"2014-10-01\",\"end-date\":\"2014-10-23\",\"ids\":\"ga:76546294\",\"dimensions\":\"ga:userType\",\"metrics\":[\"ga:users\"],\"start-index\":1,\"max-results\":10},\"itemsPerPage\":10,\"totalResults\":2,\"selfLink\":\"https://www.googleapis.com/analytics/v3/data/ga?ids=ga:76546294&dimensions=ga:userType&metrics=ga:users&start-date=2014-10-01&end-date=2014-10-23&max-results=10\",\"profileInfo\":{\"profileId\":\"76546294\",\"accountId\":\"289147\",\"webPropertyId\":\"UA-289147-1\",\"internalWebPropertyId\":\"456104\",\"profileName\":\"US - Institutional Investors - NP Microsite\",\"tableId\":\"ga:76546294\"},\"containsSampledData\":false,\"columnHeaders\":[{\"name\":\"ga:userType\",\"columnType\":\"DIMENSION\",\"dataType\":\"STRING\"},{\"name\":\"ga:users\",\"columnType\":\"METRIC\",\"dataType\":\"INTEGER\"}],\"totalsForAllResults\":{\"ga:users\":\"1110\"},\"rows\":[[\"New Visitor\",\"826\"],[\"Returning Visitor\",\"284\"]]}</string>",
   "status":200,
   "statusText":"OK"
}

----------- JSON结束------------

我想从字符串的开头删除这些字符:

`{"readyState":4,"responseText":"<?xml version=\"1.0\"encoding=\"utf-8\"?>\r\n<string>`

我想从字符串的末尾删除这些字符:

`</string>","status":200,"statusText":"OK"}`

所以我想删除这些字符。我想要使​​用一组JavaScript String函数。但我不知道如何将它们混合使用。

有人可以帮我解决这个问题吗?

谢谢和问候, Chiranthaka

更新

我已经使用了以下的AJAX函数来发送和获取JSON响应。

function setJsonSer() {
                formData = {
                'Email': 'clientlink@site.com',
                'Password': 'password1234',
                'URL': getVaria()
            };
                $.ajax({
                url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
                type: 'POST',
                data: formData,
                complete: function(data) {
            var jsonResult = JSON.stringify(data);
            alert(JSON.stringify(data));

            Load(data);

                }
            }); 
    }

更新02

function setJsonSer() {
                formData = {
                'Email': 'clientlink@russell.com',
                'Password': 'russell1234',
                'URL': getVaria()
            };
                $.ajax({
                url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
                type: 'POST',
                data: formData,
            dataType: 'json',
                complete: function(data) {
            var jsonResult = JSON.stringify(data);

            alert(jsonResult);

            Load(data);

                }
            });                 

    }

2 个答案:

答案 0 :(得分:0)

我看了你的代码:

complete: function(data) {
  var jsonResult = JSON.stringify(data);

  alert(jsonResult);

  Load(data);
}

所以你想stringify你的自定义结果,但你的结果没有得到很好的解析JSON *?如果是,那么:

complete: function(data) {
  var responseText = data.responseText;
  var responseJson = JSON.parse(responseText.match(/[{].*.[}]/));
  // you can skip `JSON.parse` if you dont want to leave it as `String` type

  alert(JSON.stringify(responseJson)); //or just `responseJson` if you skip `JSON.parse`

  Load(JSON.stringify(responseJson));
}

这可以解决您的问题一段时间。但我认为问题出在你的backend中,它没有提供解析良好的JSON数据。我的建议是先修复你的后端系统。

*不解析好JSON ,因为您的结果在XML对象下包含JSON类型的字符串。

答案 1 :(得分:0)

  1. 你必须解析JSON以获取其中的内容(你有 完成此事)
  2. 您必须解析XML以获取XML内的文本
  3. 以下是XML解析的示例代码: http://www.w3schools.com/xml/tryit.asp?filename=tryxml_parsertest2