使用.replace的自定义json值给出未定义的输出

问题描述 投票:0回答:3

我有这样的json:

var data = {
"items":[
{
"id":"asd01231987391",
"sku":"ABC-0128712",
"product":"product abc",
"desc":"this is abc product",
"price":1200,
"qty":1
}
]
}1400;

我使用替换编辑/自定义'1400'值为“总”:1400,所以我可以从2行json获得值,这个代码:

var Total = data+"]]";
var resTotal = Total.replace("}]}", '}],"total":');
var resTotal2 = resTotal.replace("]]", "}");
var resTotal1 = resTotal2; 


console.log(resTotal1.items);
console.log(resTotal1.total);

但是2控制台的输出仍然给出“未定义”的结果。

最终结果必须如下:从console 1 = resTotal1.items:

var res = resTotal1.items;
    $.each(res, function(i, item) {

    ... loop the json from items ..
                                }

从控制台2:它只是为了显示1400;

任何人都可以帮助我。

这是我的傻瓜

JSON CUSTOM

谢谢

jquery json
3个回答
0
投票

在字符串替换之前,您必须先将data转换为字符串,然后将其转换回JSON。

var Total = data.toString()+"]]";
var resTotal = Total.replace("}]}", '}],"total":');
var resTotal2 = resTotal.replace("]]", "}");
var resTotal1 = resTotal2; 
var resTotal_final = JSON.parse(resTotal1);


$(".resx").append('<span>'+resTotal_final.total+'</span>' );

var data = '{"items":[{"id":"asd01231987391","sku":"ABC-0128712","product":"product abc","desc":"this is abc product","price":1200,"qty":1}]}1400';

var Total = data.toString() + "]]";
var resTotal = Total.replace("}]}", '}],"total":');
var resTotal2 = resTotal.replace("]]", "}");
var resTotal1 = resTotal2;
var resTotal_final = JSON.parse(resTotal1);

$(".resx").append('<span>' + resTotal_final.total + '</span>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="resx">
</div>

https://jsfiddle.net/1asyozcf/3/


2
投票

我认为这是无效的JSON格式。无论如何,我认为这将有所帮助。

var data = '{"items":[{"id":"asd01231987391","sku":"ABC-0128712","product":"product abc","desc":"this is abc product","price":1200,"qty":1}]}1400';

    var Total = data+"]]";
    var resTotal = Total.replace("}]}", '}],"total":');
    var resTotal2 = resTotal.replace("]]", "}");
    var resTotal1 = resTotal2; 

    // Use JSON.parse();

    console.log(JSON.parse(resTotal1).total);
    console.log(JSON.parse(resTotal1).items);

1
投票

你JSON格式错误

var data = {
        "items":[
            {
                "id":"asd01231987391",
                "sku":"ABC-0128712",
                "product":"product abc",
                "desc":"this is abc product",
                "price":1200,
                "qty":1
            }
        ],
        "total": 1400
    };

希望这将是你的json数据。要获得物品使用data.items和总使用data.total

var data = {
        "items":[
            {
                "id":"asd01231987391",
                "sku":"ABC-0128712",
                "product":"product abc",
                "desc":"this is abc product",
                "price":1200,
                "qty":1
            }
        ],
        "total": 1400
    };

    console.log("Items...");
    console.log(data.items);
    console.log("Total...");
    console.log(data.total);

更新:(基于评论)

如果您的输入是字符串并且格式与您定义的一样,那么首先使其成为有效的json字符串,然后解码为有效的json对象

var data =  '{"items":[{"id":"asd01231987391","sku":"ABC-0128712","product":"product abc","desc":"this is abc product","price":1200,"qty":1}]}1400';

var formattedJSON = data.replace("}]}", "}], \"total\":")+"}";
data = JSON.parse(formattedJSON);

console.log("Items...");
console.log(data.items);
console.log("Total...");
console.log(data.total);
© www.soinside.com 2019 - 2024. All rights reserved.