java - 从控制台读取用户输入并将其写入 JSON

标签 java arrays json gson

我是 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/

相关文章:

c - 在C中解析 "String"(字符数组)为字符串,int和int

javascript - 按旁路顺序执行 HTTP 请求

javascript - 从数组中查找 parent 和 child

java - 如何使用 mysql 或 java(jdbc) 查找排名

java - 是否可以从 SPARQL 查询中提取 SPARQL 端点?

javascript - 如何使用 jQuery 将所有元素的内容放入数组中?

json - 如何快速将这个异构对象与模型映射?

java - 转换JSON日期格式

java - 在 Neo4j 图形数据库中创建一个带有事务端点的节点

Python:根据前一行的最后一个元素和后一行的第一个元素之间的差异组合数组行