У меня есть метод, который заменяет все вхождения некоторых ключей объекта JSON внутри. У метода есть 2 аргумента - объект JSON и строка для замены. Вот оно:
private XWPFTableRow replaceTextInARow(XWPFTableRow row, JSONObject jsonObjectToFindKeysIn)
{
XWPFTableRow copyOfOriginalRaw = new XWPFTableRow(row.getCtRow(), row.getTable());
for (XWPFTableCell cell : copyOfOriginalRaw.getTableCells()) {
for (XWPFParagraph p : cell.getParagraphs()) {
for (XWPFRun r : p.getRuns())
{
String text = r.getText(0);
if (text != null && jsonObjectToFindKeysIn.has(text))
{
text = text.replace(text, jsonObjectToFindKeysIn.getString(text));
r.setText(text, 0);
}
}
}
}
return copyOfOriginalRaw;
}
И это так хорошо работает. Я сделал копию оригинальной строки по причине - я не хочу заменять оригинальную строку - установите эту строку в это значение, если это необходимо.
Однако, в этом случае, похоже, не работает:
XWPFTableRow exampleRow = tableToCreateRowsIn.getRow(tableToCreateRowsIn.getRows().size() - 2);
for(int i = 0; i < allSections.length(); i++)
{
System.out.println(exampleRow.getCell(0).getText());
JSONObject particularSection = allSections.getJSONObject(i);
XWPFTableRow replacedTableRow = replaceTextInARow(exampleRow, particularSection);
tableToCreateRowsIn.addRow(replacedTableRow, i + 2);
}
Вот пример строки, которая выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/GdA4i.png)
Я хочу использовать этот пример для каждого объекта JSON внутри массива. Однако после самой первой итерации в цикле exampleRow становится совершенно другим - с тех пор каждый вывод становится замененным значением внутри цикла.
И это дает мне количество строк, основанных на длине массива allSection. Но они все одинаковые, так как exampleRow изменился. Я хочу, чтобы он был неизменным. В чем проблема? Заранее спасибо.