SimpleUI simplebase JSON DecodeError: Invalid control character
есть несколько вопросов по SimpleUI SimpleBase Коды маркировки ЧЗ (Чесный знак - вода)
Обработчик onInput на форме с элементом "Штрихкод"
import android
import general
if hashMap.get("listener")=="barcode" and hashMap.containsKey("qrcode"):
qrcode = hashMap.get("qrcode")
БазаGTIN = json.loads(hashMap.get("_БазаGTIN"))
ТоварИД = ""
for itm in БазаGTIN:
if qrcode.find(itm["GTIN"])>-1:
ТоварИД = itm["ИД"]
break
if ТоварИД == "":
raise Exception('Не найден Товар в базе товаров GTIN')
rec = json.loads('{"_id" : "' + qrcode + '"}', strict=False)
rec["vedid"] = hashMap.get("_ВедомостьИД")
rec["adrid"] = hashMap.get("_АдресИД")
rec["tovid"] = ТоварИД
general.db['scan'].insert(rec, upsert=True)
Обработчик OnStart этой же формы где заполняется список отсканированных QR кодов ЧЗ
import android
import general
....
data = {
"vedid" : hashMap.get("_ВедомостьИД"),
"adrid" : hashMap.get("_АдресИД")
}
QRКодыОтсканированный = general.db['scan'].find(data)
android.notification(json.dumps(QRКодыОтсканированный,ensure_ascii=False))
#android.notification(json.dumps(QRКодыОтсканированный))
- проблема периодически ??? как то не понятно после перезапуска приложения и/или после изменения конфигурации в обработчике onStart выдается ошибка:
JSON DecodeError: Invalid control character
- general.db['scan'].find(data) - выбирает все записи, поиск не отрабатывает
PS оба вопроса так или иначе связаны и возникают в одном контексте
Ответы (1 шт):
Автор решения: Dmitry Vorontsov
→ Ссылка
У вас SimpleBase , в коде ЧЗ могут присутствовать символы, которые ломают JSON(они не экранируется). Рекомендую переключиться на Pelican - там все что надо сделать - поменять определение инстанса БД. Синтаксис одинаковый. Использовать как _id лучше не сам код, а его хеш. так точно проблем не будет. Пишете - через хеш и получаете тоже.