2016-09-28 7 views
1

Когда я запускаю класс Test Runner, он должен давать ожидаемый результат в виде Views = 1047, вместо этого он возвращает views = 0 i.e значение null. Что я делаю не так?Bean return null Значения

Это мой основной класс

public class TestRunner { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 


    JsonRestApi abc = new JsonRestApi(); 

    SocialBean bean = new SocialBean(); 

    System.out.println("Views="+bean.getViews()); 
} 

}

Это RestApi класс от того, где я впрыснуть значения боб

public class JsonRestApi { 

public JsonRestApi() { 

    try { 

     String Response = "{\"Youtube Data\":\"Views\":\"1047\"}"; 

     JSONParser parser = new JSONParser(); 

     try { 

      Object obj = parser.parse(Response); 

      JSONObject jsonObject = (JSONObject) obj; 
      JSONObject jsonObject3 = (JSONObject)jsonObject.get("Youtube Data"); 

      Long yviews = new Long((String)jsonObject3.get("Views")); 

      SocialBean bean = new SocialBean(); 

      bean.setViews(yviews); 

    } 
    } 

} }

Это мой компонент бобов

public class SocialBean { 
private long views; 
public long getViews() { 
     return views; 
    } 
    public void setViews(long views) { 
     this.views = views; 
    } 
+0

Почему «abc» влияет на «bean» в вашем основном методе? Он влияет на тот, который он создает в своем собственном конструкторе, который сразу же выходит за рамки. – JonK

+1

У вас есть два экземпляра «SocialBean», который вы создаете в «TestRunner» и один в «JsonRestApi». Вы не используете Spring в этом коде, и вы не делаете инъекции зависимостей. (Вы говорите, что вы «вводите значения в компонент», но вы ничего не вводите). – Jesper

+0

Является ли их каким-либо способом я могу получить доступ к значению компонента, установленному внутри JsonRestApi contructor в классе Test Runner? –

ответ

1

SocialBean является локальным для конструктора JsonRestApi. Делает это как частное поле.

private SocialBean bean = new SocialBean(); 
public JsonRestApi() { 

try { 

    String Response = "{\"Youtube Data\":\"Views\":\"1047\"}"; 

    JSONParser parser = new JSONParser(); 

    try { 

     Object obj = parser.parse(Response); 

     JSONObject jsonObject = (JSONObject) obj; 
     JSONObject jsonObject3 = (JSONObject)jsonObject.get("Youtube Data"); 

     Long yviews = new Long((String)jsonObject3.get("Views")); 

     bean.setViews(yviews); 

} 
} 

public SocialBean getSocialBean(){ 
    return bean; 
} 

В вашей основной метод:

System.out.println("Views="+abc.getSocialBean().getViews()); 

FYI: вы не используете Spring боб в этом коде.

+0

все еще представления возвращают нулевое значение –

+0

Я думаю, что ваш json недействителен. –

+0

Я думаю, что вы правы, я исправил свой Json –

 Смежные вопросы

  • Нет связанных вопросов^_^