当前位置: 首页 > 知识库问答 >
问题:

Android上的Symfony3 JSONResponse

后烨煜
2023-03-14

因此,我使用createQuery连接到我的symfony数据库,其原则如下

// JSON ACTION
public function jsonAction()
{
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery('SELECT pa FROM CBMedBundle:Patients pa');
$myArray = $query->getArrayResult();
return new JsonResponse($myArray);
}

在url:http://localhost/symfony/web/app_dev.php/json,现在我要在Android(eclipse Android)上导出结果(jsonreponse),并在那里显示响应!我怎么能那么做?

我在google上找到了这段关于在Android上显示json代码的代码,但我不知道如何适应我的问题。谢谢

    public class MainActivity extends Activity {
        TextView t;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            t = (TextView) findViewById(R.id.text1);
         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
         StrictMode.setThreadPolicy(policy);
         t.setText(getServerData(strURL));
        }
         public static final String strURL = "http://10.0.2.2/connexion.php";

         private String getServerData(String returnString) {
             InputStream is = null;
             String result ="";

             ArrayList<NameValuePair> nameValuePaires = new ArrayList<NameValuePair>();
             nameValuePaires.add(new BasicNameValuePair("tblville","tblville"));
             // Envoie de la commande Http
             try{
                 HttpClient httpclient = new DefaultHttpClient();
                 HttpPost httppost = new HttpPost(strURL);
                 httppost.setEntity(new UrlEncodedFormEntity(nameValuePaires));
                 HttpResponse response = httpclient.execute(httppost);
                 HttpEntity entity = response.getEntity();
                 is = entity.getContent();
         }
         catch(Exception e){
          Log.e("log_tag","Error in http connection "+e.toString());
           }


         //conversion de la réponse en chaine de caractère
            try
            {
             BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

             StringBuilder sb  = new StringBuilder();

             String line = null;

             while ((line = reader.readLine()) != null) 
             {
                  sb.append(line + "\n");
             }

             is.close();

             result = sb.toString();
            }
            catch(Exception e)
            {
             Log.e("log_tag","Error converting result"+e.toString());
            }
            //recuperation des donnees json
            try{
              JSONArray jArray = new JSONArray(result);

                 for(int i=0;i<jArray.length();i++)
                 {

                       JSONObject json_data = jArray.getJSONObject(i);
                       Log.i("log_tag","ID_ville : "+json_data.getString("ID_ville")+" , Nom_ville : "+json_data.getString("Nom_ville")
                               );
                        returnString += "\n\t" + jArray.getJSONObject(i);

                }
            }
                catch(JSONException e){
                 Log.e("log_tag","Error Parsing data"+e.toString());
                } 
                return returnString;

    }
    }
[{"id":1,"nom":"Kane","prenom":"Samba","DateNaissance":{"date":"1995-03-08     00:00:00","timezone_type":3,"timezone":"Europe\/Paris"},"LieudeNaissance":"Nouakchott","sexe":"Homme","adresse":"Tunis","profession":"Etudiant","NumerodeTel":"+21629760962","Email":"kane_samba4@yahoo.fr","SituationFamilial":"Mari\u00e9"},{"id":2,"nom":"Bebeskho","prenom":"AllStar","DateNaissance":{"date":"1995-02-08 00:00:00","timezone_type":3,"timezone":"Europe\/Paris"},"LieudeNaissance":"Bamako","sexe":"Homme","adresse":"Tunis","profession":"Cuisinier","NumerodeTel":"+2167583486","Email":"bebeskho@gmail.com","SituationFamilial":"C\u00e9libataire"},{"id":3,"nom":"Vecenzo","prenom":"Gaimno","DateNaissance":{"date":"1995-01-01 00:00:00","timezone_type":3,"timezone":"Europe\/Paris"},"LieudeNaissance":"Tunis","sexe":"Homme","adresse":"Ariana","profession":"Etudiant","NumerodeTel":"+21654758","Email":"vecenzogo","SituationFamilial":"Mari\u00e9"},{"id":4,"nom":"Diara","prenom":"Bakary","DateNaissance":{"date":"1995-06-10 00:00:00","timezone_type":3,"timezone":"Europe\/Paris"},"LieudeNaissance":"Dakar","sexe":"Homme","adresse":"Dakar Sacr\u00e9 Coeur","profession":"Etudiant","NumerodeTel":"+2214753526","Email":"diaBakis@gmail.com","SituationFamilial":"C\u00e9libataire"}]

共有1个答案

弘涛
2023-03-14

为了使代码适合您的目的,您需要更改URL以指向您的服务器。将public static final String strURL=“http://10.0.2.2/connexion.php”;更改为http:// /symfony/web/app_dev.php/JSON (假设HTTP-GET请求返回粘贴的JSON数组)。然后修改JSON处理代码以提取JSON文件中包含的详细信息,如下所示:

    for(int i=0;i<jArray.length();i++)
     {

        JSONObject personJSONData= jArray.getJSONObject(i);
        String id = personJSONData.getString("id");
        String nom = personJSONData.getString("nom");
        //do the same for the other attributes
        //note that according to your JSON file, DateNaissance is a JSONObject - so you have to do something like
       JSONObject dateNaissanceObject = personJSONData.getJSONObject("DateNaissance");

 }

但是我确实建议您使用类似Gson的方法将传入的JSON有效负载解析为一个“Person”对象列表。作为一个示例,假设您已经创建了一个Person类,您将执行以下操作:

list persons=gson.fromjson(result,new typeToken >(){}.gettype()); 。这里是一个很好的例子--这里是另一个使用Gson的很好的例子--这里还有一个很好的教程。

 类似资料:
  • 问题内容: 根据: Android 2.0应该支持HTML5视频元素。我无法使用MotorolaDroid使它正常工作,也无法在其中的任何HTML5视频示例页面上成功查看视频。由于目前不支持QuickTime或Flash,这是我想到的将mp4视频嵌入网页中的唯一其他方法。有人有运气吗? 问题答案: 我已经对此进行了一些试验,从我可以告诉你的需要三件事: 调用视频时,不得使用 type 属性。 您必

  • 问题内容: 这听起来像是一个愚蠢的问题,但Google并没有帮助我。 是否有适用于Android的JRE?如果是,是哪个版本?是否缺少任何主要功能? 如果不是,那是否意味着需要重新编译所有Java应用程序才能使Dalvik在Android上运行? 更新; Android是否会提供JRE? 问题答案: 不,那里没有。Google确实为Android创建了完全不同的运行时,其中基类完全不同(尽管 兼容

  • 我在 当我调用时。我看到另一个帖子,答案是重写一些方法,即。 异常在处引发,与库版本有关。 最后,这是我的建筑。gradle(应用程序)

  • 我的应用程序上有WebView,我在android 7.0上从用户那里得到了许多相同的错误,同时膨胀了WebView片段。 错误日志: Android看法充气异常:二进制XML文件行#8:二进制XML文件行#8:错误充气类android。网络工具包。网络视图导致:android。看法充气异常:二进制XML文件行#8:充气类android时出错。网络工具包。网络视图 网络视图片段布局: 我从这些设备

  • 问题内容: 有没有人曾经在Android上使用过Multimaps? 问题答案: 番石榴在Android上可以直接使用。你有什么问题?使用发布的JAR,而不是Guava来源。与往常一样,您应该在构建过程中使用ProGuard来缩减最终二进制文件的大小。

  • 我现在在android ndk中很天真。我尝试了此url中给出的步骤:https://www3.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html根据此,我从androidndkr_10导入我的eclipse中的HELLO_JNI示例,当我运行它时,会在logcat中出现以下错误 08-17 18:12:01.472:E/Andr