【问题标题】:Android and new JSON in my old app我的旧应用程序中的 Android 和新 JSON
【发布时间】:2016-02-07 00:37:20
【问题描述】:

我编写了一个从 WebService 检索数据并在 ListView 中显示这些数据的应用程序。

这是我的 JSON 对象:

{
    "products": [{
        "id": "240",
        "title": "Przemys\u0142 stoczniowy. Co dalej?",
        "introtext": "<p>Przemys\u0142 stoczniowy prze\u017cywa obecn[....]"
    }, {
        "id": "239",
        "title": "Ceny Franka \u2013 prognozy",
        "introtext": "</p><p>Po ostatnich zmianach w kursie Franka wiele [...]"
    }, {
        "id": "238",
        "title": "Otwarty Fundusz Emerytalny",
        "introtext": "</p><p>Saldo zakup\u00f3w i sprzeda\u017cy akcji [...]"
    }, {
        "id": "233",
        "title": "Czy waluta Bitcoin doczeka\u0142a si\u0119 gro\u017anego konkurenta?",
        "introtext": "</p><p>Bitcoin - kryptowaluta, wprowadzona w 2009 roku. [...]"
    }],
    "success": 1
}

这些是我的静态变量 - JSON 节点名称:

public static final String TAG_SUCCESS = "success";
public static final String TAG_PRODUCTS = "products";
public static final String TAG_PID = "id";
public static final String TAG_NAME = "title";
public static final String TAG_INTROTEXT = "introtext";

这些工作正常。

现在我有了不同的 JSON:

{"status":200,
"data":
{"slide":[
{"image":"http:\/\/www.domain.com\/image\/slide\/1.jpg","link":"http:\/\/www.domain.com\/product?id=52\x0078lang=pl"},
{"image":"http:\/\/www.domain.com\/image\/slide\/2.jpg","link":"http:\/\/www.domain.com\/product?id=53\x0078lang=pl"},
{"image":"http:\/\/www.domain.com\/image\/slide\/3.jpg","link":"http:\/\/www.domain.com\/product?id=4\x0078lang=pl"},
{"image":"http:\/\/www.domain.com\/image\/slide\/4.jpg","link":"http:\/\/www.domain.com\/product?id=13\x0078lang=pl"}],
"portfolio":[
{"id":52,"name":"Aplikacja pierwsza","description":"To jest opis aplikacji pierwszej[...]"},
{"id":37,"name":"Aplikacja druga","description":"To jest opis aplikacji drugiej [...]"},
{"id":4,"name":"Aplikacja trzecia","description":"To jest opis aplikacji trzeciej [...]"},
{"id":51,"name":"Aplikacja czwarta","description":"To jest opis aplikacji czwartej [...]"},
"person":[
{"name":"Jan Kowalski","position":"Prezes","image":"http:\/\/www.domain.com\/image\/persons\/1.png"},
{"name":"Jan Nowak","position":"Dyrektor","image":"http:\/\/www.domain.com\/image\/persons\/2.png"},
{"name":"Adam Malysz","position":"Vice Director","image":"http:\/\/www.domain.com\/image\/persons\/3.png"}],
"work":[
{"name":"Programista","image":"http:\/\/www.domain.com\/image\/file-type\/android.png","file":"http:\/\/www.domain.com\/file\/ogloszenie_1.pdf"},
{"name":"Praktykant","image":"http:\/\/www.domain.com\/image\/file-type\/smarttv.png","file":"http:\/\/www.domain.com\/file\/ogloszenie_2.pdf"},
{"name":"Project Manager","image":"http:\/\/www.domain.com\/image\/file-type\/pm.png","file":"http:\/\/www.domain.com\/file\/dogloszenie_3.pdf"},
{"name":"Tester","image":"http:\/\/www.domain.com\/image\/file-type\/tester.png","file":"http:\/\/www.domain.com\/file\/ogloszenie_4.pdf"}
]}}

现在我必须提取变量:id、name 和 description。

当我在 TAG_PRODUCTS 字符串“portfolio”中写入时,我得到:

W/System.err: org.json.JSONException: No value for portfolio

当我在 TAG_PRODUCTS 字符串“数据”中写入 - 或更广泛地说,我得到:

W/System.err: org.json.JSONException: Value {"work":[{"image":"http:\/\/www.domain.com\/image\/slide\/1.jpg"[...]

系统在 Log 中为我提供了长 JSON 字符串,但我的应用程序无法运行(在 try-catch 块中结束运行)。

【问题讨论】:

  • 您的新 JSON 不是有效的 JSON。 portfolio 没有右方括号
  • 另外,添加您的 Java 代码。你在哪里解析这个 JSON

标签: android json


【解决方案1】:

作为porfolio 键值的数组未关闭。在解析之前,您必须确保您的 JSON 格式正确。

在开始解析 JSON 时,尝试在代码中为 JSONException 使用 try-catch 块。

【讨论】:

    【解决方案2】:

    好的,谢谢! 这些是解决我的问题:

    products = json.getJSONObject("data").getJSONArray("portfolio");
    

    数据 id 对象容器和投资组合是子数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多