用变量创建json对象

时间:2012-10-19 17:24:09

标签: javascript jquery json object

我正在尝试从我在表单中获取的变量创建一个json对象。

var firstName = $('#firstName').val();
var lastName  = $('#lastName').val();
var phone     = $('#phoneNumber').val();
var address   = $('#address').val();

到目前为止,我有下面的代码,但它不会验证或工作。我是新手,请帮忙! 将var更改为:

var jsonObject = 
                {
                 firstName: firstName, 
                 lastName: lastName,
                 phoneNumber:phoneNumber,
                 address:address
                }

在JSONlint中我收到此错误:

  

第1行的解析错误:   varjsonObject = {
  ^   期待' {',' ['

5 个答案:

答案 0 :(得分:20)

如果您需要使用双引号JSON,请使用JSON.stringify( object)

var $items = $('#firstName, #lastName,#phoneNumber,#address ')
var obj = {}
$items.each(function() {
    obj[this.id] = $(this).val();
})

var json= JSON.stringify( obj);

DEMO:http://jsfiddle.net/vANKa/1

答案 1 :(得分:11)

Object Literal

上调用它

我不确定你希望你的结构是什么,但根据你上面的内容,你把值放在变量的地方试试吧。

var formObject =  {"formObject": [
                {"firstName": firstName, "lastName": lastName},
                {"phoneNumber": phone},
                {"address": address},
                ]}

虽然这似乎更有意义(为什么你在上面的文字中有一个数组?):

var formObject = {
   firstName: firstName
   ...
}

答案 2 :(得分:6)

尝试此操作,了解如何从字符串创建对象。

var firstName = "xx";
var lastName  = "xy";
var phone     = "xz";
var adress    = "x1";
var obj = {"firstName":firstName, "lastName":lastName, "phone":phone, "address":adress};
console.log(obj);

答案 3 :(得分:4)

在执行$('#lastName')之类的操作时,您正在引用DOM元素。这是id属性“lastName”的元素。为什么这样?您想引用存储在局部变量中的值,完全不相关。试试这个(假设formObject的赋值与变量声明的范围相同) -

var formObject = {
    formObject: [
        {
            firstName:firstName,  // no need to quote variable names
            lastName:lastName
        },
        {
            phoneNumber:phoneNumber,
            address:address
        }
    ]
};

这看起来很奇怪:你正在创建一个对象“formObject”,它包含一个名为“formObject”的成员,它包含一个对象数组。

答案 4 :(得分:2)

var formValues = {
    firstName: $('#firstName').val(),
    lastName: $('#lastName').val(),
    phone: $('#phoneNumber').val(),
    address: $('#address').val()
};

请注意,这将包含对象文字被解释的时间点元素的值,而不是访问对象属性时的值。你需要为此写一个吸气剂。