简体   繁体   中英

Order of object fields in spring boot rest api response changes

I have following model class:

package com.restAPIExmaple;

public class ApiModel {
    
    private String City;
    private String TeamName;
    private String QBName;
    
    
    public ApiModel() {
        
    }

    public ApiModel(String city, String teamName,  String qBName) {
        
        City = city;
        TeamName = teamName;
        QBName = qBName;
        
    }

    public String getCity() {
        return City;
    }

    public void setCity(String city) {
        City = city;
    }

    public String getTeamName() {
        return TeamName;
    }

    public void setTeamName(String teamName) {
        TeamName = teamName;
    }

    public String getQBName() {
        return QBName;
    }

    public void setQBName(String qBName) {
        QBName = qBName;
    }

}

Here is the service class:

package com.restAPIExmaple;
import java.util.List;
import org.springframework.stereotype.Service;
import java.util.Arrays;

@Service
public class ApiService {
    
    private List <ApiModel> score = Arrays.asList(
            new ApiModel("Jacksonville","Jaguars","Gardner Minshew"),
            new ApiModel("Tempa Bay", "Buccaneer", "Tom Brady"),
            new ApiModel("San Fran", "49rs", "Jimmy Garoppolo"),
                        
            );
    
    public List<ApiModel> getScores()
    {
    return score;
    }
    
    public ApiModel getTeam(String team){
        
        return score.stream().filter(t -> t.getTeamName().equalsIgnoreCase(team)).findFirst().get();
        
        
    }   

}

The Controller is as below:

package com.restAPIExmaple;

import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;


@RestController
@RequestMapping("/football")
public class ApiController {
    @Autowired
    private ApiService apiService;
    
@GetMapping(value = "/scores", produces = {MediaType.APPLICATION_XML_VALUE,
                                          MediaType.APPLICATION_JSON_VALUE})

public List<ApiModel> getScores(){
    return apiService.getScores();
    
}

@GetMapping(value="/{team}", produces = {MediaType.APPLICATION_XML_VALUE,
                                   MediaType.APPLICATION_JSON_VALUE})
public ApiModel getTeam(@PathVariable String team){
    
    return apiService.getTeam(team);
    
}   
}

Here is the response in xml:

<List>
    <item>
        <teamName>Jaguars</teamName>
        <city>Jacksonville</city>
        <qbname>Gardner Minshew</qbname>
    </item>
    <item>
        <teamName>Buccaneer</teamName>
        <city>Tempa Bay</city>
        <qbname>Tom Brady</qbname>
    </item>
    <item>
        <teamName>49rs</teamName>
        <city>San Fran</city>
        <qbname>Jimmy Garoppolo</qbname>
    </item>
    </List>

Problem: The order of the object properties has been changed in the out put. I cant get City, Team name , QBname in that order order in the response. When I generate getter and setter using Eclipse, the order of the fields there is different from the model class as well. Any idea? Thank you.

start variable name with simple letters. that's the case

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM