我对服务等级有外部要求
public getEndereco(cep: string){
return this.http.get("http://viacep.com.br/ws/" + cep + "/json",{
responseType: 'text'
});
}
此后,我捕获了返回的json并将其放入类Util中的对象
public getEndereco(cep: string): Endereco{
let endereco = new Endereco();
this.serviceUtil.getEndereco(cep)
.subscribe((response)=>{
let json = JSON.parse(response);
endereco.cep = json.cep;
endereco.rua = json.logradouro;
endereco.complemento = json.complemento;
endereco.bairro = json.bairro;
endereco.cidade = json.localidade;
endereco.estado = this.buscarEstadoSigla(json.uf);
},(erro)=>{
console.log(erro);
});
return endereco;
}
在我的视野中,我得到了这个物体并将其制成:
private getEndereco(){
this.endereco = this.util.getEndereco(this.endereco.cep);
this.estado = this.endereco.estado;
}
但“ this.endereco.estado”始终为空。 我知道异步的角度工作。 我如何期望对象“ this.endereco”从返回到赋值为底线之后返回?
答案 0 :(得分:0)
您应该修改getEndereco
以返回Observable
,如下所示:
import { map } from 'rxjs/operators';
public getEndereco(cep: string): Endereco{
return this.serviceUtil.getEndereco(cep)
.pipe(map((response)=>{
let endereco = new Endereco();
let json = JSON.parse(response);
endereco.cep = json.cep;
endereco.rua = json.logradouro;
endereco.complemento = json.complemento;
endereco.bairro = json.bairro;
endereco.cidade = json.localidade;
endereco.estado = this.buscarEstadoSigla(json.uf);
return endereco;
}));
}
您可以这样订阅:
private getEndereco(){
this.util.getEndereco(this.endereco.cep).subscribe(endereco => {
this.endereco = endereco;
this.estado = this.endereco.estado;
});
}
答案 1 :(得分:0)
另一件事:如果是已知对象,则无需转换json中的所有内容。创建一个endereco.model.ts并将其导入。然后,您可以将其用作对象。
contains
然后建立您的模型:
Scanner input = new Scanner(System.in);
System.out.println("Enter a valid SSN");
String ssn = input.nextLine();
if (ssn.length() == 11 &&
ssn.charAt(0)>='0' && ssn.charAt(0)<='9' &&
ssn.charAt(1)>='0' && ssn.charAt(1)<='9' &&
ssn.charAt(2)>='0' && ssn.charAt(2)<='9' &&
ssn.charAt(4)>='0' && ssn.charAt(4)<='9' &&
ssn.charAt(5)>='0' && ssn.charAt(5)<='9' &&
ssn.charAt(7)>='0' && ssn.charAt(7)<='9' &&
ssn.charAt(8)>='0' && ssn.charAt(8)<='9' &&
ssn.charAt(9)>='0' && ssn.charAt(9)<='9' &&
ssn.charAt(10)>='0' && ssn.charAt(10)<='9' &&
ssn.charAt(3)=='-' && ssn.charAt(6)=='-')
{
System.out.println(ssn + " is a valid social security number");
}
else
System.out.print(ssn + " is not a valid social security number");
input.close();
}