【问题标题】:how to convert ResultSet to JSON object如何将 ResultSet 转换为 JSON 对象
【发布时间】:2015-01-08 11:24:10
【问题描述】:

我们尝试使用以下代码将 ResultSet 转换为 JSON 对象:

var getAllCalelements = {};           // Object
    getAllCalelements['totalamount'] = [];          
    getAllCalelements['totalamount'].push(result.rows.item(i).totalamount);
    getAllCalelements['discount'] = [];          
    getAllCalelements['discount'].push(result.rows.item(i).invoicediscount);
    getAllCalelements['NetAmount'] = [];          
    getAllCalelements['NetAmount'].push(result.rows.item(i).namount);
    getAllCalelements['vat'] = [];          
    getAllCalelements['vat'].push(result.rows.item(i).vat);
    getAllCalelements['GrossAmount'] = [];          
    getAllCalelements['GrossAmount'].push(result.rows.item(i).gamount);
    getAllCalelements['bookOrder'] = [];          
    getAllCalelements['bookOrder'].push(result.rows.item(i).bookorder);

var json = JSON.stringify(getAllCalelements, undefined, 2);

但是,我们得到了这样的 JSON

{
  "totalamount": [19760.22],
  "discount": [ 7],
  "NetAmount": [ 18377],
  "vat": [ 8],
  "GrossAmount": [ 8],
  "bookOrder": [ "ABCANG00110"]
}

而且,我们需要这样的 JSON 输出

[
    {
        "totalamount": 19760.22,
        "discount": 7,
        "NetAmount": 18377,
        "vat": 8,
        "GrossAmount": 8,
        "bookOrder": "ABCANG00555"
    }
]    

我已经尝试过,但我没有得到如上所述的期望输出,我得到的是 JSON 输出。但是我们需要上述格式的 JSON。请大家指导我得到上面提到的我想要的输出,谢谢。

【问题讨论】:

    标签: javascript json cordova jquery-mobile resultset


    【解决方案1】:
    var obj = [];
    
    for (var i = 0; i < result.rows.length; i++){
    
        var getAllCalelements = {};           // Object
        getAllCalelements['totalamount'] = result.rows.item(i).totalamount ;
        getAllCalelements['discount'] = result.rows.item(i).invoicediscount;
        getAllCalelements['NetAmount'] = result.rows.item(i).namount;
        getAllCalelements['vat'] = result.rows.item(i).vat;
        getAllCalelements['GrossAmount'] = result.rows.item(i).gamount;
        getAllCalelements['bookOrder'] = result.rows.item(i).bookorder;
        obj.push(getAllCalelements);
    
    }
    
    var json = JSON.stringify(obj, undefined, 2); 
    

    【讨论】:

      【解决方案2】:

      试试下面的代码:

      var obj = {};
      obj = [];
      
      for(var i=0;i<result.rows.item.length;i++)
      {
          var getAllCalelements = {};           // Object
          getAllCalelements['totalamount'] = result.rows.item(i).totalamount ;
          getAllCalelements['discount'] = result.rows.item(i).invoicediscount;
          getAllCalelements['NetAmount'] = result.rows.item(i).namount;
          getAllCalelements['vat'] = result.rows.item(i).vat;
          getAllCalelements['GrossAmount'] = result.rows.item(i).gamount;
          getAllCalelements['bookOrder'] = result.rows.item(i).bookorder;
      
          obj.push(getAllCalelements);
      }
      var json = JSON.stringify(obj, undefined, 2);  
      

      输出:

      [
        {
          "totalamount": "19760.22",
          "discount": "7",
          "NetAmount": "18377",
          "vat": "8",
          "GrossAmount": "8",
          "bookOrder": "ABCANG00110"
        }
      ]  
      

      如果您通过obj.push(getAllCalelements) 将第二个对象添加到obj,您将得到以下输出

      [
        {
          "totalamount": "19760.22",
          "discount": "7",
          "NetAmount": "18377",
          "vat": "8",
          "GrossAmount": "8",
          "bookOrder": "ABCANG00110"
        },
        {
          "totalamount": "19760.22",
          "discount": "7",
          "NetAmount": "18377",
          "vat": "8",
          "GrossAmount": "8",
          "bookOrder": "ABCANG00110"
        }
      ]
      

      【讨论】:

      • 感谢您的回复,我需要这样 [{“totalamount”:1000,“othervalue”:“value”},{“totalamount”:2060,“othervalue”:“value2”}]跨度>
      • 当我运行你的代码时,它的数据是这样的 [{}][{}] 但我们需要这样的 [{},{},{}]。请帮助我
      • 如果您再次通过obj.push() 将新对象推送到obj,它将提供与您想要的相同的输出。
      【解决方案3】:

      @aschattney 对您的答案进行了即兴创作,并通过 Object.keys() 将其动态化,并将其包装在一个函数中,以便您传递 resultSet,即在本例中为 sqlResultSet,它会返回有效的 JSON。

        function returnJsonFromSqlResultSet(sqlResultSet) {
      
          var objArr = [];
      
          if (sqlResultSet.rows.length > 0) {
      
            var objKeys = Object.keys(sqlResultSet.rows.item(0)); //sample the keys from first element
      
            for (var i = 0; i < sqlResultSet.rows.length; i++) {
      
              var jsonObj = {}; // Object
      
              for (var j = 0; j < objKeys.length; j++) {
                jsonObj[objKeys[j]] = sqlResultSet.rows.item(i)[objKeys[j]];
              }
      
              objArr.push(jsonObj);
      
            }
      
            var json = JSON.stringify(objArr, undefined, 2);
            return json;
      
          }
      }
      

      谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 2012-04-01
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        相关资源
        最近更新 更多