怎样在前端解析由后端传输过来的json?

有个结构体:

type Sln struct {
    N  int
    X1 string
    X2 string
}

后端给前端一个形如{"N":-2,"X1":"5+2i","X2":"5-2i"}的json,然后由前端获取:

function ajaxPopulate() {
    var oTxt1 = document.getElementById('txt1');
    var oTxt2 = document.getElementById('txt2');
    var oTxt3 = document.getElementById('txt3');

    var s1 = oTxt1.value;
    var s2 = oTxt2.value;
    var s3 = oTxt3.value;

    var Json = '{"A":' + s1 + ',"B":' + s2 + ',"C":' + s3 + '}';

    var oAjax = new XMLHttpRequest();
    oAjax.open('POST', '/ajax', true);
    oAjax.send(Json);

    // 接收返回
    oAjax.onreadystatechange = function () {
        if (oAjax.readyState == 4) {
            if (oAjax.status == 200) {
                var str = oAjax.responseText; // 这是服务器传过来的json
            }
        }
    };
}

str是那个json字符串,怎么把NX1X2的值拿出来?

共 6 个回复


manzhiyong

var obj = jQuery.parseJSON(str);
console.log(obj.N);
# 0

ThoseFlowers

@manzhiyong 如果不用库,会不会很复杂?

# 1

manzhiyong

一般都是用直接用jquery的ajax方法,连我1楼的写法都没用过,更别提不用库的了,应该是比较麻烦,jquery很好用。

# 2

ThoseFlowers

@manzhiyong 哦,那就用这个吧,我一直搞cpp,对这个不熟

# 3

TannhauserGate

javascript解析JSON直接用eval()就可以,var json=eval('('+str+')')

# 4

heimeil

var data = JSON.parse('{"a":1}');
# 5