#javascript #json #parsing
#язык JavaScript #json #разбор
Вопрос:
У меня есть строка json, возвращаемая методом страницы C# razor следующим образом:
var data = {"Transactions":"[{"BatchID":"814C87D9-7037-4E66-97EC-5861D2712997","BatchOpenStatus":"Y","Time":"2021-09-02T10:41:26.318","recType":"Trip","RevisionNum":0,"ID":"e1ddc1ac-0c0c-11ec-b55b-e2b9dfec84c8","Payment Type":"2","Tag Agency":"0046","Transponder ID":"309999","Plate#":"","State":"","Type":"PAS","Class":"4","AVC Class":"4","VehSpeed":" ","TagStatus":"0","TagClass":"2","Plaza":"072","Lane":"41"},{"BatchID":"814C87D9-7037-4E66-97EC-5861D2712997","BatchOpenStatus":"Y","Time":"2021-09-02T10:53:26.229","recType":"Trip","RevisionNum":0,"ID":"7c5dccbe-0c0e-11ec-b55b-e2b9dfec84c8","Payment Type":"2","Tag Agency":"0046","Transponder ID":"309119","Plate#":"JSON06","State":"","Type":"PAS","Class":"4","AVC Class":"4","VehSpeed":" ","TagStatus":"0","TagClass":"2","Plaza":"072","Lane":"41"},{"BatchID":"814C87D9-7037-4E66-97EC-5861D2712997","BatchOpenStatus":"Y","Time":"2021-09-02T13:05:26.17","recType":"Trip","RevisionNum":0,"ID":"fb707240-0c20-11ec-b55b-e2b9dfec84c8","Payment Type":"2","Tag Agency":"0046","Transponder ID":"377159","Plate#":"470E03","State":"","Type":"PAS","Class":"2","AVC Class":"2","VehSpeed":" ","TagStatus":"0","TagClass":"2","Plaza":"040","Lane":"2"}]","ReturnCode":0,"ReturnString":"Succesful"}
Как извлечь транзакции в моем javascript? Вот мой текущий код:
var _transactions = []; var allData= jQuery.parseJSON(data); _transactions = JSON.stringify(eval("(" allData.Transactions ")"));
Этот код отлично работает для небольшого числа «транзакций», но не работает для тысяч записей.
Любая помощь будет признательна.
Комментарии:
1. Непонятно, о чем вы спрашиваете. Не уверен
eval
, почему здесь есть;data.Transactions
уже строка и может быть проанализирована как есть. Вы имеете в виду, что веревочка есть'var data = {"..."}'
? Это не совпадает с темparseJSON(data)
.2.
var transactions = JSON.parse(data.Transactions)
3. Транзакции-это строка.
4. Это то, что
JSON.parse()
делает; анализирует строки JSON для объектов. Если у вас есть строка JSON, содержащая тысячи записей, и вы говорите, что она работает слишком медленно, вы просите более быстрый анализатор JSON? На клиенте (например, браузере) или сервере? Если клиент, не то чтобы вы могли сделать что-то значимое с тысячами записей в любом случае-для этого и нужна разбивка на страницы.5. Вот почему я анализирую его в массив … что, судя по вашему вопросу, кажется тем, чего вы хотите.
Ответ №1:
Непонятно, почему вы используете eval и даже почему jQuery
Вот простой JS
const transactions = JSON.parse(data.Transactions) console.log(transactions) // example of getting the item values - use [""] for strings with spaces transactions.forEach(transaction =gt; console.log(transaction["Transponder ID"]))
lt;scriptgt; const data = {"Transactions":"[{"BatchID":"814C87D9-7037-4E66-97EC-5861D2712997","BatchOpenStatus":"Y","Time":"2021-09-02T10:41:26.318","recType":"Trip","RevisionNum":0,"ID":"e1ddc1ac-0c0c-11ec-b55b-e2b9dfec84c8","Payment Type":"2","Tag Agency":"0046","Transponder ID":"309999","Plate#":"","State":"","Type":"PAS","Class":"4","AVC Class":"4","VehSpeed":" ","TagStatus":"0","TagClass":"2","Plaza":"072","Lane":"41"},{"BatchID":"814C87D9-7037-4E66-97EC-5861D2712997","BatchOpenStatus":"Y","Time":"2021-09-02T10:53:26.229","recType":"Trip","RevisionNum":0,"ID":"7c5dccbe-0c0e-11ec-b55b-e2b9dfec84c8","Payment Type":"2","Tag Agency":"0046","Transponder ID":"309119","Plate#":"JSON06","State":"","Type":"PAS","Class":"4","AVC Class":"4","VehSpeed":" ","TagStatus":"0","TagClass":"2","Plaza":"072","Lane":"41"},{"BatchID":"814C87D9-7037-4E66-97EC-5861D2712997","BatchOpenStatus":"Y","Time":"2021-09-02T13:05:26.17","recType":"Trip","RevisionNum":0,"ID":"fb707240-0c20-11ec-b55b-e2b9dfec84c8","Payment Type":"2","Tag Agency":"0046","Transponder ID":"377159","Plate#":"470E03","State":"","Type":"PAS","Class":"2","AVC Class":"2","VehSpeed":" ","TagStatus":"0","TagClass":"2","Plaza":"040","Lane":"2"}]","ReturnCode":0,"ReturnString":"Succesful"}lt;/scriptgt;
Комментарии:
1. У меня есть сетка данных DevExpress, в которой я привязываю источник данных к массиву транзакций. Кажется, я не могу этого сделать. Я попробую поддержку DevExpress. Спасибо вам за ваши решения.