如何动态获取json数组中的html节点值

问题描述 投票:0回答:1

我想为

n
人获取这些信息。所以我应该更好地编写代码,但由于我是新手,我不知道如何做到这一点。

我的用户在jsp文件中填写的输入:

 {
   "name":"Jones",
   "lastname":" Smith",
   "email":"[email protected]",
   "gender":"Male",
   "age": 28,
   "address":
   {
    "streetaddress":"724th Street",
    "city":"New York",
    "state": "NY",
    "postalcode":"10038"
   }
  },

  {
   "name":"Jack",
   "lastname":" farmer",
   "email":"[email protected]",
   "gender":"Male",
   "age": 32,
   "address":
   {
    "streetaddress":"121th Street",
    "city":"New York",
    "state": "NY",
    "postalcode":"10045"
   }
 }

注册.jsp

.
.
. 
<input> ...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 
</script>
<script type="text/javascript">
$(document).ready(function() {
    $("#register").click(function() {
        // get inputs
        var name = $('#name').val();
        var lastname = $('#lastname').val();
        var email = $('#email').val();
        var gender = $('#gender').val();
        var age = $('#age').val();
        var streetaddress = $('#streetaddress').val();
        var city = $('#city').val();
        var state = $('#state').val();
        var postalcode = $('#postalcode').val();
    
        var myVar = JSON.stringify({
                name: firstname,
                lastname: lastname,
                email:email,
                gender:gender,
                age:age,
                "Address":[
                    {
                        streetaddress:streetaddress,
                        city:city,
                        state:state,
                        postalcode:postalcode
                    }],
            });
            alert(myVar);
            $.ajax({
                url: '/UserController',
                type: 'POST',
                data: 'params=' + myVar,//sending json data
                dataType: 'json',
                contentType: 'application/json',
                mimeType: 'application/json',
                success: function(data) {
                    //just for printing purpose
                    var json = JSON.stringify(data);
                    alert("Success ...");
                },
                error: function(data) {
                    alert("fail");
                }
            });
        }
    });
});
  </script>
.

用户控制器.java

@WebServlet(name = "UserController", value = "/userController",urlPatterns = 
{"/register"})
public class UserController extends HttpServlet {
   Gson gson = new Gson();
   User data = gson.fromJson(params, User.class);
   Address address = new Address(data.getAddress().streetaddress(),
            data.getAddress().getCity(),
            data.getAddress().getState(),
            data.getAddress().postalcode());

   User user = new User(data.getName(),
            data.getLastName(),
            data.getEmail(),
            data.getGender(),
            data.getAge(),
            data.getAddress());

用户.java

public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "first_name")
private String name;
@Column(name = "last_name")
private String lastName;
@Column(name = "user_name")
private String email;
@Embedded
private Address address;
@Column(name = "gender")
private String gender;
@Column(name = "age")
private int age;

public User(String name,
            String lastName,
            String email,
            Address address,
            String gender,
            int age) {
    this.name = name;
    this.lastName = lastName;
    this.email = email;
    this.address = address;
    this.gender = gender;
    this.age = age;
}
... setter and getter

我希望我的代码更先进一点。为此,我希望将 JS 文件中的所有输入动态放入数组中并在控制器中读取。由于我对这件事知之甚少,请帮助我学习。(在索引0的数组中获取姓名,索引1获取姓氏,...)

例如:

const myArr = [];
for(int i=0;i<length;i++)
{
    myObj[i].firstname= $('#firstname').val();
    myObj[i].lastname= $('#lastname').val();
    myObj[i].email=$('#email').val();
    myObj[i].password1=$('#password1').val();
    myObj[i].password2=$('#password2').val();

    myArr.push(myobj)
 }

如何向该数组添加地址?

javascript java gson
1个回答
0
投票

我注意到的第一件事是你的

JSON
无效。我已更改您的
JSON
以使其有效。要获得第 N 个用户,您需要将
JSON
转换为
Array
List

关键代码

Gson gson = new Gson();
User[] users = gson.fromJson(getFileContent(), User[].class);

主要

import com.google.gson.Gson;


/**
 *
 * @author blj0011
 */
public class JavaTestingArea {    
    public static void main(String[] args) {
        Gson gson = new Gson();
        User[] users = gson.fromJson(getFileContent(), User[].class);
        
        for(User user : users)
        {
            System.out.println(user.getId());
            System.out.println(user.getName());
            System.out.println(user.getAge());
            System.out.println(user.getAddress().getCity());
            System.out.println(user.getAddress().getStreetAddress());
            System.out.println("");
        }
        
        //To get an Nth user
        System.out.println("Nth user info.");
        User user = users[1];
        System.out.println(user.getId());
        System.out.println(user.getName());
        System.out.println(user.getAge());
        System.out.println(user.getAddress().getCity());
        System.out.println(user.getAddress().getStreetAddress());        
}  
    
    static public String getFileContent()
    {
        return """
               [
                   {
                       "name": "Jones",
                       "lastname": " Smith",
                       "email": "[email protected]",
                       "gender": "Male",
                       "age": 28,
                       "address": {
                           "streetaddress": "724th Street",
                           "city": "New York",
                           "state": "NY",
                           "postalcode": "10038"
                       }
                   },
                   {
                       "name": "Jack",
                       "lastname": " farmer",
                       "email": "[email protected]",
                       "gender": "Male",
                       "age": 32,
                       "address": {
                           "streetaddress": "121th Street",
                           "city": "New York",
                           "state": "NY",
                           "postalcode": "10045"
                       }
                   }
               ]
               """;
    }
}

用户

public class User
{
    private long id;
    private String name;
    private String email;
    private Address address;
    private String gender;
    private int age;

    public User(long id, String name, String email, Address address, String gender, int age)
    {
        this.id = id;
        this.name = name;
        this.email = email;
        this.address = address;
        this.gender = gender;
        this.age = age;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public long getId()
    {
        return id;
    }

    public void setId(long id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public Address getAddress()
    {
        return address;
    }

    public void setAddress(Address address)
    {
        this.address = address;
    }

    public String getGender()
    {
        return gender;
    }

    public void setGender(String gender)
    {
        this.gender = gender;
    }

    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        sb.append("User{");
        sb.append("id=").append(id);
        sb.append(", name=").append(name);
        sb.append(", email=").append(email);
        sb.append(", address=").append(address);
        sb.append(", gender=").append(gender);
        sb.append(", age=").append(age);
        sb.append('}');
        return sb.toString();
    }    
}

地址

public class Address
{
    private String streetaddress;
    private String city;
    private String state;
    private String postalcode;

    public Address(String streetaddress, String city, String state, String postalcode)
    {
        this.streetaddress = streetaddress;
        this.city = city;
        this.state = state;
        this.postalcode = postalcode;
    }

    public String getPostalcode()
    {
        return postalcode;
    }

    public void setPostalcode(String postalcode)
    {
        this.postalcode = postalcode;
    }

    public String getStreetAddress()
    {
        return streetaddress;
    }

    public void setStreetAddress(String streetaddress)
    {
        this.streetaddress = streetaddress;
    }

    public String getCity()
    {
        return city;
    }

    public void setCity(String city)
    {
        this.city = city;
    }

    public String getState()
    {
        return state;
    }

    public void setState(String state)
    {
        this.state = state;
    }

    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        sb.append("Address{");
        sb.append("streetaddress=").append(streetaddress);
        sb.append(", city=").append(city);
        sb.append(", state=").append(state);
        sb.append(", postalcode=").append(postalcode);
        sb.append('}');
        return sb.toString();
    }
}

输出

0
Jones
28
New York
724th Street

0
Jack
32
New York
121th Street

Nth user info.
0
Jack
32
New York
121th Street
© www.soinside.com 2019 - 2024. All rights reserved.