【问题标题】:JSONArray and ArrayList getting replaced for every value insertionJSONArray 和 ArrayList 被替换为每个值插入
【发布时间】:2016-12-20 04:36:26
【问题描述】:

每次插入值都会替换 JSONArray

在下面的输出中,我将被旧的 jArrayFacebookData 取代。

或者我需要将那些 json 数据添加到字符串中

dbchooseuserid,dbchoosebookid,dbchoosechapterid,dbchoosequestionid, Type,dbchooseoptionid这些值来自 db,这些值我需要制作 json 字符串

我需要这样的输出

string h =[{"user_id":"1","book_id":"64","chapter_id":"1","question_type":"hint","question_id":"1","notes":",,Gg,,,,"},{"user_id":"1","book_id":"64","chapter_id":"1","question_type":"choose","question_id":"1","option_id":"1"}]

这是我的代码

JSONArray jArrayFacebookData = new JSONArray();
         JSONObject jObjectData = new JSONObject();


ArrayList<String> a= new ArrayList<String>();
if(TypeHint.equals("hint"))
         {
  try {
                        jObjectData.put("user_id", dbhintuserid);
                        jObjectData.put("book_id", dbhintbookid);
                        jObjectData.put("chapter_id", dbhintchapterid);
                        jObjectData.put("question_type", TypeHint);
                        jObjectData.put("question_id", dbhintquestionid);
                        jObjectData.put("notes", dbhintnotes);

                        jArrayFacebookData.put(jObjectData);
                        Log.i("tag555", ""+jArrayFacebookData.toString());
 a.add(jObjectData.toString());
        Log.i("tag5", ""+a);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }}

if(Type.equals("choose"))
         {
  try {
                        jObjectData.put("user_id", dbchooseuserid);
                        jObjectData.put("book_id", dbchoosebookid);
                        jObjectData.put("chapter_id", dbchoosechapterid);
                        jObjectData.put("question_type", Type);
                        jObjectData.put("question_id", dbchoosequestionid);
                        jObjectData.put("option_id", dbchooseoptionid);

                        jArrayFacebookData.put(jObjectData);
                        Log.i("tag555", ""+jArrayFacebookData.toString());
 a.add(jObjectData.toString());
        Log.i("tag5", ""+a);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }}

我得到的输出是

[{"user_id":"1","book_id":"64","chapter_id":"1","question_type":"choose","question_id":"1","option_id":"1"}]

但我需要这样的输出

[{"user_id":"1","book_id":"64","chapter_id":"1","question_type":"hint","question_id":"1","notes":",,Gg,,,,"}{"user_id":"1","book_id":"64","chapter_id":"1","question_type":"choose","question_id":"1","option_id":"1"}]

【问题讨论】:

  • 我不是 javascript 方面的专家,但我注意到了一些事情。首先,您将“question_type”替换为“TypeHint”或“Type”。如果您希望该值是“notes”,您可能应该使用“TypeHint”。其次,设置“notes”对象时似乎发生了某种错误。您可以尝试使用“console.error(e);”而不是打印堆栈跟踪以查看有关 JSON 异常的更多详细信息
  • 我需要这样的输出字符串 h =[{"user_id":"1","book_id":"64","chapter_id":"1","question_type":"hint", "question_id":"1","notes":",,Gg,,,,"},{"user_id":"1","book_id":"64","chapter_id":"1","question_type ":"choose","question_id":"1","option_id":"1"}]
  • 你能从这段代码中发布完整的代码吗,看起来你在调用类/方法时有问题,如果你仔细检查你的数组,列表将在每次调用时被初始化,这样你就不会得到欲望结果,除非您在外面初始化它们并在此处添加项目。

标签: android arrays json string arraylist


【解决方案1】:

在每个 if 条件之后实例化 JSONObject,然后尝试。

 if(TypeHint.equals("hint")){
     JSONObject jObjectData = new JSONObject();
      ......


   if(Type.equals("choose")){
    JSONObject jObjectData = new JSONObject();
    ....

【讨论】:

  • 你能在这里粘贴JSONArray和JSONObject的完整包详情吗?
  • 全包是什么意思?我正在使用 ksoap
  • JSONObject 的包名,如net.sf.json.JSONObject 我的意思是你为 JSONObject 和 JSONArray 使用了哪些 API。
  • dbchooseuserid,dbchoosebookid,dbchoosechapterid,dbchoosequestionid, Type,dbchooseoptionid这些值来自 db,这些值我需要制作 json 字符串
猜你喜欢
  • 2013-06-06
  • 2015-07-30
  • 2016-10-29
  • 1970-01-01
  • 2011-06-18
  • 2014-03-24
  • 2023-03-27
  • 2021-06-28
相关资源
最近更新 更多