2016-09-25 3 views
0

Здравствуйте я службы, которые возвращают меня JSON в формате:Apex (Salesforce) чтения JSON от ответа

"{\"phoneIsValid\":true,\"IsMobile\":true,\"message\":\"success\"}" 

Я получаю ответ со статусом 200 (ОК)

, но как я могу получить мои значения из json (phoneIsValid, IsMobile, сообщение), в клиенте Apex.

Вот мой код в вершине (сервис работает 100%)

 JSONGenerator gen = JSON.createGenerator(true); 
     gen.writeStartObject(); 
     gen.writeStringField('phone', '123466789'); 
     gen.writeEndObject(); 
     String jsonString= gen.getAsString(); 

     HttpRequest req = new HttpRequest(); 
     req.setMethod('POST'); 
     req.setHeader('Content-Type', 'application/json'); 
     req.setHeader('Accept', 'application/json'); 
     req.setHeader('Content-Length',String.Valueof(jsonString.length())); 
     req.setHeader('Connection','keep-alive'); 
     req.setHeader('Charset','utf-8'); 
     req.setEndpoint('https://services.ValidatePhone'); 
     req.setBody(jsonString); 

     Http http = new Http(); 
     HTTPResponse res = new HTTPResponse(); 
     res = http.send(req); 
     JSONParser parser = JSON.createParser(res.getBody()); 
     //res.getBody() return --> 

"{\"phoneIsValid\":true,\"IsMobile\":true,\"message\":\"success\"}"

 if(res.getStatusCode() == 200)//i get 200,but cant find my value from Json 
       { 

       //here i need to get my values from Json 
       // SOME THINK LIKE THIS 
       // if(parser.phoneIsValid==true){ MY CODE} 

       } 

Что я здесь отсутствует?

+1

http://json2apex.herokuapp.com – superfell

ответ

0

superfell спасибо.

вам нужно добавить класс, который buils для вас JSon pbject

public class JsonPhone { 

    public boolean phoneIsValid=false; 
    public boolean IsMobile=false; 
    public String message='empty'; 

     } 

немного Modify строки, потому что оно не работает хорошо с моей строки ответа

"{\" phoneIsValid \ ": правда, \" IsMobile \ ": правда, \" сообщение \ ": \" успех \ "}"

  String sResponseText = res.getBody(); 
      sResponseText=sResponseText.replaceFirst('^\"+', ''); 
      sResponseText=sResponseText.replaceFirst('\"+$', ''); 
      sResponseText=sResponseText.replace('\\', ''); 

      JsonPhone jPhone = (JsonPhone)JSON.deserialize(sResponseText, JsonPhone.class); 

и JPH один готовый к использованию.

+0

Я считаю, что дополнительные кавычки в вашей строке являются артефактом того, как работает system.Debug, поэтому вам не нужны строки, которые пытаются и исправить это. – superfell