Сравните два bson_t в C / Stack Overflow

Мне нужно сравнить два bson_t. Я обнаружил, что два bson_t могут иметь различную последовательность пар ключ-значение. Например, {«key1»: «val1», «key2»: «val2»} и {«key2»: «val2», «key1»: «val1»}. Но они одинаковы в моем проекте. bson_compare () и bson_equal () в этом случае вернут false. Как решить эту проблему в C / C ++?

Кстати, как отсортировать эти пары ключ-значение в C или C ++?

Спасибо

0

Решение

bson_compare а также bson_equal проверьте, равны ли два буфера содержимого (не только значения @ два буфера (или места в памяти)). Оно использует memcmp внутренне сравнить два объекта. Следовательно, x==y не означает, что memcmp(x,y)==0,

0

Другие решения

Два метода:
(1) Это легко сделать в Python. Напишите функцию Python. И вызвать эту функцию Python из программы C ++.
(2) Использование bson_iter_t для итерации каждой пары ключ-значение в bson_t и рекурсивного сравнения.

Второй метод кажется более сложным. Но я решил использовать это. Теперь я уже закончил часть метода.

0