我有json文件,我使用Gson库将json对象解析为java对象。下一步是创建主类,其中在Apache POI的帮助下,读取了准备好的docx文件,在文本中进行了一些更改,并创建了带有更改的新文档。我遇到的问题是应该更改的文本需要是可变的(来自json文件)。我的意思是" name"和" testName"两者都应该是变量或方法,所以我可以从text.contains中调用它们。你能否表明我的错误和正确的方法来完成任务。提前致谢。 这是我的代码`
public class main {
public static void gson() {
Gson gson = new Gson();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("jsonn.json"));
Result result = gson.fromJson(br, Result.class);
if (result != null) {
result.getName();
result.getLastname();
System.out.println(result.getName());
System.out.println(result.getLastname());
for (Phone p : result.getPhones()) {
p.getType();
p.getNum();
System.out.println(p.getType() + ": " + p.getNum());
// System.out.println(p.getType()+" : "+p.getNum());
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}}
public class Result {
@SerializedName("name")
@Expose
private String name;
@SerializedName("lastname")
@Expose
private String lastname;
@SerializedName("phones")
@Expose
private List<Phone> phones = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public List<Phone> getPhones() {
return phones;
}
public void setPhones(List<Phone> phones) {
this.phones = phones;
}}
public class Phone {
@SerializedName("name")
@Expose
private String name;
@SerializedName("lastName")
@Expose
private String lastName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@SerializedName("num")
@Expose
private String num;
@SerializedName("type")
@Expose
private String type;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}}
public class Read {
public static void main(String[] args) throws InvalidFormatException,
IOException {
main.gson();
XWPFDocument doc = new XWPFDocument(OPCPackage.open("Шаблон.docx"));
Result res = new Result();
String replaceName = res.getName();
for (XWPFParagraph p : doc.getParagraphs()) {
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null && text.contains("name")) {
text = text.replace("name", "Alex");
r.setText(text, 0);
}
}
}
}
for (XWPFTable tbl : doc.getTables()) {
for (XWPFTableRow row : tbl.getRows()) {
for (XWPFTableCell cell : row.getTableCells()) {
for (XWPFParagraph p : cell.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
String text = r.getText(0);
if (text != null && text.contains("name")) {
text = text.replace("name", "Alex");
r.setText(text, 0);
}
}
}
}
}
}
doc.write(new FileOutputStream("Пример.docx"));
}}
`
这是json文件:
{
"name":"testName",
"lastname":"testLastName",
"phones":[
{
"num":"9000000",
"type":"mobile"
},
{
"num":"1000000",
"type":"home"
} ]}