首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从JSON对象中获取特定值,如名称?

如何从JSON对象中获取特定值,如名称?
EN

Stack Overflow用户
提问于 2019-06-05 08:25:06
回答 1查看 60关注 0票数 -1

我使用Angular作为我的应用程序的前端。对于后端,我使用glassfish。我目前使用Http GET动词来获取一个带有id、名称和地址的JSON对象。我只想获取对象的名称,如何在typescript文件中实现?如何获取rest服务器最新添加的对象的名称?

我想从对象中获取restaurantName:

代码语言:javascript
复制
{ restaurantId: 1, restaurantName: 'Mcdonalds', restaurantAdres: 'Kalverstraat 5' },

从rest服务器检索对象的代码:

代码语言:javascript
复制
   ngOnInit() {
    this.http.get('http://localhost:8080/aquadine-jee/resources/restaurant')
      .subscribe(
        val => {
          const restStr = JSON.stringify(val);
          console.log(restStr);

    );

后端代码:

代码语言:javascript
复制
@GET

  @Produces("application/json")
  public Response all(){
    List<Restaurant> all = repositoryService.getAllRestaurants();
    return  Response
      .status(200)
      .header("Access-Control-Allow-Origin", "*")
      .entity(all)
      .build();
  }
代码语言:javascript
复制
 public List<Restaurant> getAllRestaurants() {
    EntityManager em = entityManagerFactory.createEntityManager();
    List<Restaurant> restaurants = em.createQuery("SELECT r FROM Restaurant r").getResultList();
    em.close();
    return restaurants;
  }
代码语言:javascript
复制
@Entity
@Table(name = "restaurant")
@NamedQueries({
  @NamedQuery(name = "Restaurant.findOne", query = "select m from Restaurant m where m.id = :id"),
  @NamedQuery(name = "Restaurant.getAll", query = "select m from Restaurant m")
})
public class Restaurant implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;



//    @Column(name="naam")
//    @NotBlank
//    private String naam;

  //    @NotBlank
  String restaurantName;


  //    @NotBlank
  String restaurantAdres;


  int restaurantId;

  public Restaurant(){

  }


  public Restaurant(int restaurantId, String restaurantName, String restaurantAdres) {
    this.restaurantId = restaurantId;
    this.restaurantName = restaurantName;
    this.restaurantAdres = restaurantAdres;
  }
EN

回答 1

Stack Overflow用户

发布于 2019-06-05 09:09:25

首先,我会创建一个类,也许还会创建一个接口,以便在TypeScript中提供强类型对象:

然后,您可以将get请求中的对象作为该对象返回,并随心所欲地使用该对象,如result.restaurantName

这是一个快速模拟(使用存根方法而不是http) is here:

简而言之:

Angular的类和接口:

代码语言:javascript
复制
export interface IRestaurant {
   restaurantId: number;
   restaurantName: string;
   restaurantAddres: string;
}

export class Restaurant implements IRestaurant {
    restaurantId:number;
    restaurantName:string;
    restaurantAddres:string;
}

然后组件通过一个方法获取数据,并使用JSON作为对象:

代码语言:javascript
复制
export class AppComponent  {
favoriteRestaurant: IRestaurant;

  retrieve(){
    this.favoriteRestaurant = this.getRestaurant();

    alert(this.favoriteRestaurant.restaurantName);
  }

  getRestaurant():IRestaurant {
    var result: Restaurant = {
       restaurantId: 1, 
       restaurantName: 'Mcdonalds',
       restaurantAddres: 'Kalverstraat 5'
    };

    return result;
  }
}

不过,为了让它对您更有用,请将http.get方法更改为如下所示:

代码语言:javascript
复制
ngOnInit() {
    this.http.get('http://localhost:8080/aquadine-jee/resources/restaurant')
      .subscribe(
        val:IRestaurant => {
          this.favoriteRestaurant = val;
          console.log(restStr.restaurantName);    
    );

您不希望使用上面的JSON.stringify,因为它会给出一个字符串!此外,您的restaurantAddress拼写错误,这将需要完全匹配。所以我会纠正后端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56452857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档