Newtonsoft json выдает ошибку при выборе токена с десятичным значением
когда я пытаюсь использовать
foreach (JObject ii in jj.SelectTokens("$[?(@.total_amount > 2)]"))список фильтруется правильно для целых чисел. но если json содержит числа с десятичной дробью, например 25.3 или что-то еще, я получаю исключение, входная строка не была в правильном формате.
образец в формате JSON:
[[{"doc_code":"123","doc_type":"update inventory","line_number":"1","doc_date":"6/15/2018","Cost Center":"Iconic Solutions","tax_calc_date":"","vendor_id":"Iconic Solutions","use_id":"1","tax_code":"tc105","item_id":"1","description":"desc1","quantity":"1","discount":"","tax_included":"","taxable_amount":"100","charged_tax":"","total_amount":"27.5","Ref1":"","Ref2":"","RevAcct":"","DestAddress":"103 madras","DestCity":"","DestRegion":"","DestPostalCode":"235692","DestCountry":"","OrigAddress":"86nasdnv","OrigCity":"","OrigRegion":"","OrigPostalCode":"23654","OrigCountry":"","DestLocationCode":"","OrigLocationCode":"","PurchaseingAgentCode":"","PurchaseOrderNo":"","address":"","city":"","region":"","postal_code":"","country":"","import_id":"72","company_id":"2","costcenter_id":"","marked_for_allocation":"","is_allocated":"","allocation_method":"","calculated_tax":"","marked_for_review":"","line_item_status":"","warning_status":"","insert_user":"","cutt_line_item_number":"","processing_stage":"","user_id":"21","cut_proc_number":"","variance":"0","purpose_id":"0","error_code_id":"0"}]]
Что я уже пробовал:
foreach (JObject lineItem in lineItem1.SelectTokens("$[?(@.total_amount > 1)]"))
это код, который я использовал и не смог заставить его работать с json prop total_amount с 25.6 или любым десятичным значением
Afzaal Ahmad Zeeshan
Что такое тип lineItem1? И как вы разбираете объекты?
Это похоже на несоответствие типов, возможно, вы пытаетесь проанализировать данные, которые не соответствуют типу в типе объекта.
если json содержит числа с десятичной дробью, например 25.3 или что-то еще, я получаю исключение, входная строка не была в правильном формате.
Однако он работает, когда у вас есть целое число, поэтому просто убедитесь, что у вас нет типа объекта с членом int.
https://stackoverflow.com/questions/16398352/strange-json-net-exception-input-string-was-not-in-a-correct-format
Richard Deeming
Работает ли он, если вы включаете десятичную точку в фильтр?
lineItem1.SelectTokens("$[?(@.total_amount > 1.0)]")
mithunnivas
да, это сработало. к сожалению, я был нездоров и не мог ответить.
Я попробовал вышеприведенное решение сразу после публикации этой темы и получил его работу. большое вам спасибо за помощь.
newtonsoft json net автоматически определяет условие на основе типа.
mithunnivas
Здравствуйте, сэр. даже сейчас это не работает. когда я передаю 1.0 или 3.56, он просто берет первую цифру и сравнивает ее. ничего больше. все еще торчу здесь.