Android中JSONObject处理null数据成“null“

问题描述:

提示:Android中解析JSONObject拿到的null数据成"null",并在TextView中显示null字符串。

                    JSONObject survey = data.getJSONObject("data").getJSONArray("survey").getJSONObject(0);
                    SurveyModel model = new SurveyModel();
                    model.setRecord_id(survey.getInt("record_id"));
                    model.setStamp(survey.getInt("stamp"));
                    model.setStart_date(survey.getString("start_date"));
                    model.setEnd_date(survey.getString("end_date"));
                    model.setTitle(survey.getString("title"));
                    model.setTitle_tc(survey.getString("title_tc"));
                    model.setDescription(survey.isNull("description")?null:survey.getString("description"));
                    model.setDescription_tc(survey.isNull("description_tc")?null:survey.getString("description_tc"));
                    model.setQuestions(survey.getJSONArray("form_format"));
                    fragment = QuestionPreviewFragment.newInstance(model);

原因分析:

JSONObject处理数据bug,处理null数据会被存为一个JSONObject对象"null"。


解决方案:

方案一:用Gson解析数据
方案二:加入判断,见上代码
方案三(不推荐):第一次拿到json数据时,将数据中的null字符串替换为""。
str.replaceAll(“null”,"");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android SQLite3存储JSONObject数据时,可以将JSONObject对象转换字符串形式,然后使用SQLite API将其存储到数据。以下是一个简单的示例代码: ``` public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE mytable (id INTEGER PRIMARY KEY, data TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS mytable"); onCreate(db); } public void insertData(JSONObject jsonObject) { ContentValues values = new ContentValues(); values.put("data", jsonObject.toString()); getWritableDatabase().insert("mytable", null, values); } public List<JSONObject> getData() { List<JSONObject> list = new ArrayList<>(); Cursor cursor = getReadableDatabase().rawQuery("SELECT data FROM mytable", null); if (cursor.moveToFirst()) { do { try { JSONObject jsonObject = new JSONObject(cursor.getString(cursor.getColumnIndex("data"))); list.add(jsonObject); } catch (JSONException e) { e.printStackTrace(); } } while (cursor.moveToNext()); } cursor.close(); return list; } } public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new MyDatabaseHelper(this); // Insert data JSONObject data = new JSONObject(); try { data.put("name", "John"); data.put("age", 30); } catch (JSONException e) { e.printStackTrace(); } dbHelper.insertData(data); // Query data List<JSONObject> dataList = dbHelper.getData(); for (JSONObject jsonObject : dataList) { Log.d("MainActivity", "data: " + jsonObject.toString()); } } @Override protected void onDestroy() { dbHelper.close(); super.onDestroy(); } } ``` 在该示例,我们首先创建了一个名为“mytable”的表,其包含一个“data”列用于存储JSONObject数据。然后我们在MyDatabaseHelper类定义了一个insertData()方法和一个getData()方法,用于插入数据和查询数据。在insertData()方法,我们将JSONObject对象转换字符串形式,并使用ContentValues类将其插入到数据。在getData()方法,我们查询数据数据,并将其转换JSONObject对象。 需要注意的是,在使用SQLite3存储JSONObject数据时,需要小心处理数据格式和数据安全性问题,例如避免数据格式不一致、数据转换异常等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值