【问题标题】:Difference between string scanning and JSON parsing for a JSON stringJSON字符串的字符串扫描和JSON解析之间的区别
【发布时间】:2016-06-05 14:23:11
【问题描述】:

基本上,我有一个 JSON 字符串,可以在链接 Six Critics 中找到。当我使用 JSON 解析来分隔字符串中的字段时,在 asynctask onPostExecute 中,每次查看时都会刷新片段。但是当我通过获取两个分隔符的索引之间的子字符串来使用字符串扫描方法时,如果之前加载了片段,则不会刷新片段内容。

这种行为的原因是什么? JSON解析是否过于密集?建议这样做是什么?

编辑:

JSONObject jsonWholePage = new JSONObject(result);
JSONArray posts = jsonWholePage.optJSONArray("posts");

for(int i=0; I<posts.length(); i++){
  JSONObject postObject = posts.getJSONObject(i);
  JSONArray cate = postObject.optArray("categories");
  int num_cate = cate.length();
  String category = cate.getJSONObject(0).optString("title");

  String title = postObject.optString("title");

  //do something with title and category

我正在使用默认的 Android JSON 库 org.json.*

【问题讨论】:

  • 你能提供一些示例代码吗?如果你有 json,那么你应该使用提供的工具来解析,而不是 substring
  • 您没有为任何人提供足够的信息来帮助您。请看这个:stackoverflow.com/help/how-to-ask
  • 那么,让我添加实际代码。
  • 不要手动解析 json 字符串,而是尝试使用 google 的 gson java 库,该库可用于将 json 字符串转换为等效的 Java 对象 - github.com/google/gson
  • @Clive Seebregts 我认为您可以将您的评论表达为答案。

标签: java android json android-fragments string-search


【解决方案1】:

不要手动解析JSON 字符串,而是尝试使用Google 的GSON 库,该库可用于将JSON 字符串转换为等效的Java 对象。

使用 jsonschema2pojo 从您的 JSON 字符串中自动生成您需要的 POJO (Java) 类。

步骤:

  1. 通过将以下行添加到app/build.gradle 文件来添加GSON 库:dependencies { compile 'com.google.code.gson:gson:2.4' }
  2. 转到jsonschema2pojo
  3. JSON 字符串复制并粘贴到输出框中。
  4. 为来源类型选择JSON
  5. 为注释样式选择无。
  6. 点击预览按钮。
  7. 将生成的类复制并粘贴到您的项目中。
  8. 要自动解析JSON 字符串,请使用以下代码:Example example = new Gson().fromJson(json, Example.class);

【讨论】:

  • 我被困在第 3 步。我应该在那里粘贴任何 JSON 字符串吗?
  • 是的,将您的 JSON 字符串粘贴到那里。您可能需要减小 JSON... 的大小
  • 但是该框中已经有一个默认字符串。我可以改用它吗?我有点困惑为什么我需要在那里粘贴我的 JSON 字符串。为什么我不能只使用任何其他 JSON 字符串,因为这是一个可以帮助我从 JSON 字符串生成 Java 对象的工具?
  • 该工具需要您特定的 JSON 字符串来生成 GSON 库也需要转换您的 JSON 字符串的适当类
  • 但我将使用几个不同的 JSON 字符串。如果我需要给它我的特定字符串,这是否意味着我必须为它们中的每一个生成不同的类?我需要以编程方式完成所有工作。
猜你喜欢
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多