Удалите дубликаты из JSON-подобной структуры с помощью Java [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Удалите дубликаты из JSON-подобной структуры с помощью Java [закрыто]

Сообщение Anonymous »

Ввод

Код: Выделить всё

{
    "email" : "ala@ma.kota"
},{
    "email" : "kot@ma.ale"
},{
    "email" : "ala@ma.kota"
},{
    "email" : "kot@ma.ale"
},
Ожидаемый результат

Код: Выделить всё

{
    "email" : "ala@ma.kota"
},{
    "email" : "kot@ma.ale"
},
  • Удалить дубликаты
  • сохранить формат
  • добавить последнюю запятую.
Проблема заключается в том, что иногда входные данные не являются правильным JSON, а также не уверен, что запятая всегда должна присутствовать в конце. Мне нужно удалить из входных данных только повторяющиеся пары «ключ-значение», остальные должны остаться прежними.
Я пробовал так.

Код: Выделить всё

if (maxIndex > 0) {
try {
singleElementTemplate = dao.resolveObjectDataStringSinglePass(tmdtId, sourceTagHandle,
maxIndex);

String jsonText = singleElementTemplate.trim();

if (!jsonText.startsWith("[") && !jsonText.endsWith("]")) {
jsonText = "[" + jsonText + "]";
}

JSONArray jsonArr = new JSONArray(jsonText);

Set seen = new LinkedHashSet();
JSONArray finalJsonArr = new JSONArray();

for (int i = 0; i < jsonArr.length(); i++) {
JSONObject obj = jsonArr.getJSONObject(i);
if (seen.add(obj.toString())) {
finalJsonArr.put(obj);
}
}

StringBuilder formattedResult = new StringBuilder();
for (int i = 0; i < finalJsonArr.length(); i++) {

// Appends formatted JSON (2-space indent)
formattedResult.append(finalJsonArr.getJSONObject(i).toString(2));
if (i < finalJsonArr.length() - 1) {
formattedResult.append(",\n");
}
}

singleElementTemplate = formattedResult.toString().trim();

} catch (JSONException ex1) {
}
} else {}
Но результат такой.

Код: Выделить всё

{"email" : "ala@ma.kota"},
{"email" : "kot@ma.ale"}
Примечание. Я не могу использовать регулярное выражение, поскольку JSON также может содержать вложенные {}.


Подробнее здесь: https://stackoverflow.com/questions/798 ... using-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»