我是 Java 编程新手。我想做的是,从控制台读取输入,然后将其写入 JSON,之后我会将 JSON 中的数据保存到数据库中。
我编写了一个类UserInput,它读取用户输入,如下所示:
package com.mmk.vo;
import java.io.*;
import java.util.Scanner;
import java.io.IOException;
public class UserInput {
private String firstName,lastName,email, mobile;
public String UserInput() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter your name;");
String firstName = sc.next();
Scanner sc1 = new Scanner(System.in);
System.out.println("Enter your lastName;");
String lastName = sc1.next();
Scanner sc2 = new Scanner(System.in);
System.out.println("Enter your email;");
String email = sc2.next();
Scanner sc3 = new Scanner(System.in);
System.out.println("Enter your mobile;");
String mobile = sc3.next();
return "UserInput [fisrtName=" + firstName + ", lastName=" + lastName + ", email=" + email + ", mobile="
+ mobile + "]";
}
}
我在主类中编写了一个方法,在其中给出了一些默认值,其作用是将这些默认值写入数据库。
static UserInput jsonToDB(){
String json = "{"
+ "firstName: \"Arsene\","
+ "lastName: \"Wenger\","
+ "mobile: \"1234\","
+ "email: \"test@test.com\""
+ "}";
Gson g = new Gson();
UserInput user = g.fromJson(json, UserInput.class);
//System.out.println(user);
return user;
}
现在,我希望将来自控制台的用户输入写入 JSON。有人可以指导我如何实现这一目标吗?
谢谢。
最佳答案
您的代码还有很多可以改进的地方,但要解决主要问题:
在您的 UserInput 类中,您已声明了未在“UserInput”方法中设置的类的属性。您的 UserInput 方法可能应该重命名为“readUser”之类的名称,因为“UserInput”通常表示 UserInput 类的构造函数方法。
所以我建议更改 UserInput 方法的名称并将其设为静态。还使其构造一个新的 UserInput 对象,并将其从控制台读取的值设置到该新 UserInput 对象的属性上 - 如下所示:
public static UserInput readUser() {
UserInput userInput = new UserInput(); //construct a new UserInput instance
Scanner sc = new Scanner(System.in);
System.out.println("Enter your name;");
userInput.firstName = sc.next(); // set the value read from console as a property on the UserInput instance
... etc.
return userInput; // return the instance of UserInput object that we just created.
}
然后在 jsonToDb() 方法中 - 将“UserInput”对象作为参数: 即
public static UserInput jsonToDb(UserInput userInput) {
Gson g = new Gson();
String json = userInput.toJson(userInput);
.....
UserInput user = g.fromJson(json, UserInput.class);
}
或者不传入 UserInput 对象 - 使用静态方法从控制台读取它:
public static UserInput jsonToDb() {
UserInput userInput = UserInput.readUser();
Gson g = new Gson();
String json = userInput.toJson(userInput);
.....
UserInput user = g.fromJson(json, UserInput.class);
}
关于java - 从控制台读取用户输入并将其写入 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35740786/