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

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

Сообщение Anonymous »

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

//Input

{
    "email" : "ala@ma.kota"
},{
    "email" : "kot@ma.ale"
},{
    "email" : "ala@ma.kota"
},{
    "email" : "kot@ma.ale"
},

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

//expected output
{
    "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»