使用 json 的简单 java 调查问卷
Simple java questionnaire using json
我做了一个简单的问卷。我需要将回复写入 JSON 文件。怎么做?
我使用 IDEA Intellij 和库 GSON 来处理 JSON。
这是主要的class“测验”:
package questions;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Scanner;
public class Quiz {
public static <Outfile> void main(String[] args) throws IOException {
String userJson = "[{\"question\": \"1.What is your marital status?\", \"a\": \"(a)Single\", \"b\": \"(b)Married\"}," +
"{\"question\": \"2.Are you planning on getting married next year?\", \"a\": \"(a)Yes\", \"b\": \"(b)No\"},"+
"{\"question\": \"3.How long have you been married?\", \"a\": \"(a)Less than a year\", \"b\": \"(b)More than a year\"},"+
"{\"question\": \"4.Have you celebrated your one year anniversary?\", \"a\": \"(a)Yes\" , \"b\": \"(b)No\"}]";
Gson gson = new Gson();
Type questionListType = new TypeToken<ArrayList<Question>>(){}.getType();
ArrayList<Question> questionArray = gson.fromJson(userJson, questionListType);
FileWriter fileWriter = new FileWriter("answer.json");
for(Question question : questionArray) {
System.out.println("Question:" + question.question);
System.out.println("Answer:" + question.a + " " + question.b);
Scanner keyboardInput = new Scanner(System.in);
String answer = keyboardInput.nextLine();
System.out.println("You got: " + answer);
}
}}
这是class“问题”:
package questions;
public class Question {
public String question;
public String a;
public String b;
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setAnswer2(String b) {
this.b = b;
}
}
我正在尝试使用 FileWriter,但我做错了。输出文件为空。请帮助我。
您已经创建了一个 FileWriter,但实际上您从未向该文件写入任何内容。这就是文件为空的原因。
string jsonData = "{}";
FileWriter output = new FileWriter("answer.json");
// Writes the string to the file
output.write(jsonData);
// Closes the writer
output.close();
这将允许您将内容写入文件。确保在写入内容后在 FileWriter 上调用 close()
。之后你的文件 answer.json
应该包含:
{}
@Test
public void test1() {
try {
String userJson = "[{\"question\": \"1.What is your marital status?\", \"a\": \"(a)Single\", \"b\": \"(b)Married\"}," +
"{\"question\": \"2.Are you planning on getting married next year?\", \"a\": \"(a)Yes\", \"b\": \"(b)No\"}," +
"{\"question\": \"3.How long have you been married?\", \"a\": \"(a)Less than a year\", \"b\": \"(b)More than a year\"}," +
"{\"question\": \"4.Have you celebrated your one year anniversary?\", \"a\": \"(a)Yes\" , \"b\": \"(b)No\"}]";
JSONArray jsonArray = JSON.parseArray(userJson);
System.out.println(jsonArray);
List<Question> javaList = jsonArray.toJavaList(Question.class);
writeToFile(javaList);
} catch (Exception e) {
e.printStackTrace();
}
}
private void writeToFile(List<Question> data) throws Exception {
BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter("D:\test.txt"));
for (int i = 0; i < data.size(); i++) {
bw.write(JSON.toJSONString(data.get(i)));
bw.newLine();
bw.flush();
}
bw.close();
} catch (Exception e) {
throw e;
}
}
我做了一个简单的问卷。我需要将回复写入 JSON 文件。怎么做? 我使用 IDEA Intellij 和库 GSON 来处理 JSON。 这是主要的class“测验”:
package questions;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Scanner;
public class Quiz {
public static <Outfile> void main(String[] args) throws IOException {
String userJson = "[{\"question\": \"1.What is your marital status?\", \"a\": \"(a)Single\", \"b\": \"(b)Married\"}," +
"{\"question\": \"2.Are you planning on getting married next year?\", \"a\": \"(a)Yes\", \"b\": \"(b)No\"},"+
"{\"question\": \"3.How long have you been married?\", \"a\": \"(a)Less than a year\", \"b\": \"(b)More than a year\"},"+
"{\"question\": \"4.Have you celebrated your one year anniversary?\", \"a\": \"(a)Yes\" , \"b\": \"(b)No\"}]";
Gson gson = new Gson();
Type questionListType = new TypeToken<ArrayList<Question>>(){}.getType();
ArrayList<Question> questionArray = gson.fromJson(userJson, questionListType);
FileWriter fileWriter = new FileWriter("answer.json");
for(Question question : questionArray) {
System.out.println("Question:" + question.question);
System.out.println("Answer:" + question.a + " " + question.b);
Scanner keyboardInput = new Scanner(System.in);
String answer = keyboardInput.nextLine();
System.out.println("You got: " + answer);
}
}}
这是class“问题”:
package questions;
public class Question {
public String question;
public String a;
public String b;
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setAnswer2(String b) {
this.b = b;
}
}
我正在尝试使用 FileWriter,但我做错了。输出文件为空。请帮助我。
您已经创建了一个 FileWriter,但实际上您从未向该文件写入任何内容。这就是文件为空的原因。
string jsonData = "{}";
FileWriter output = new FileWriter("answer.json");
// Writes the string to the file
output.write(jsonData);
// Closes the writer
output.close();
这将允许您将内容写入文件。确保在写入内容后在 FileWriter 上调用 close()
。之后你的文件 answer.json
应该包含:
{}
@Test
public void test1() {
try {
String userJson = "[{\"question\": \"1.What is your marital status?\", \"a\": \"(a)Single\", \"b\": \"(b)Married\"}," +
"{\"question\": \"2.Are you planning on getting married next year?\", \"a\": \"(a)Yes\", \"b\": \"(b)No\"}," +
"{\"question\": \"3.How long have you been married?\", \"a\": \"(a)Less than a year\", \"b\": \"(b)More than a year\"}," +
"{\"question\": \"4.Have you celebrated your one year anniversary?\", \"a\": \"(a)Yes\" , \"b\": \"(b)No\"}]";
JSONArray jsonArray = JSON.parseArray(userJson);
System.out.println(jsonArray);
List<Question> javaList = jsonArray.toJavaList(Question.class);
writeToFile(javaList);
} catch (Exception e) {
e.printStackTrace();
}
}
private void writeToFile(List<Question> data) throws Exception {
BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter("D:\test.txt"));
for (int i = 0; i < data.size(); i++) {
bw.write(JSON.toJSONString(data.get(i)));
bw.newLine();
bw.flush();
}
bw.close();
} catch (Exception e) {
throw e;
}
}