JSON输出转换为没有知识的字符串

时间:2014-11-05 10:41:04

标签: javascript jquery ajax json

我有以下用于生成JSON输出的AJAX函数。由于JSON WebService中的错误,它会生成一些不必要的XML并删除我使用过的JavaScript正则表达式。

AJAX功能

    function setJsonSer() {
                                var strWsUrl = 'https://www.googleapis.com/analytics/v3/data/ga?
ids=ga%3A76546294&dimensions='+ 'ga%3Asource&metrics=ga%3Ausers&sort=-ga%3Ausers&start-
date='+retStartDate()+'&end-date='+retEndDate()+'&max-results=10';

 formData = {
                    'Email': 'clientlink@client.com',
                    'Password': 'password',
                    'URL': strWsUrl

                };
                     $.ajax({
                    url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
                    type: 'POST',
                    data: formData,

                    complete: function(data) {
                              var responseText = data.responseText;
                              var responseJson = JSON.parse(responseText.match(/[{].*.[}]/));

                            /*01*/  console.log("'responseJson' is " + typeof responseJson );


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

               /*04*/ Load(JSON.stringify(responseJson));

                    }
                });
            }

删除不必要的字符后,变量解析为“对象”。它应该是“对象”,所以我对此没有任何疑问。您可以在/ 01 /。

行中看到

所以在那之后,responseJson必须解析下面的JavaScript函数。

Java脚本函数

function Load(responseJson){


setJsonSer();
//----------------------------------------------- Rohan
var labels = new Array();
        var values = new Array();
        var catogories = new Array();
        var arrayOfArray = new Array();
        var rowData = responseJson;  

    /*02*/console.log("'RowData' is " + typeof rowData );       

        var inData = responseJson;

        /*03*/console.log("'inData' is " + typeof rowData );

        var count = 0;

        var headers = new Array();

        /*for (var i = 0; i < inData.columnHeaders.length; i++) {
            headers[i] = inData.columnHeaders[i].name;
        }*/


        var dates = new Array();
        var pageViews = new Array();
        var uniqueViews = new Array();

       /* for (var key in inData.rows) {

            pageViews[key] = parseInt(inData.rows[key][1]);
            uniqueViews[key] = parseInt(inData.rows[key][2]);

        }*/

        $('#container_2').highcharts({
            chart: {
                type: 'areaspline', zoomType: 'x'
            },
            title: {
                text: 'Pageviews and Bounces'
            },
            legend: {
                layout: 'vertical',
                align: 'left',
                verticalAlign: 'top',
                x: 150,
                y: 100,
                floating: true,
                borderWidth: 1,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
            },
            xAxis: {
                categories: dates,
                type: 'datetime',
                dateTimeLabelFormats: {
                    month: '%d %b',
                },
                tickInterval: 10,
                plotBands: [{ // visualize the weekend

                    color: 'rgba(68, 170, 213, .2)'
                }]
            },
            yAxis: {
                title: {
                    text: 'Visits'
                }
            },
            tooltip: {
                shared: true,
                valueSuffix: ' '
            },
            credits: {
                enabled: false
            },
            plotOptions: {
                areaspline: {
                    fillOpacity: 0.5
                }
            },
            series: [{
                name: 'Page Views',
                data: pageViews
            }, {
                name: 'Bounces',
                data: uniqueViews
            }]
        });

}

但是当我检查rowData和inData变量的数据类型时,如行/ 02 /和/ 03 /它们会显示为字符串。但它应该是“对象”。我在这里找不到我做错了什么。

2 个答案:

答案 0 :(得分:0)

您是否尝试过调试Load函数而不进行字符串化? 或者只是在responseJson上使用JSON.parse,如果你需要stringify并将其发送到Load? 如果先使用stringify,则需要使用parse方法。

答案 1 :(得分:0)

您正在传递json string而不是json object。所以 替换

Load(JSON.stringify(responseJson));

Load(responseJson);