如何解析不可预测的JSON对象?

时间:2017-12-09 18:45:58

标签: java android json

我的应用根据用户的选择从API解析JSON。由于每个用户的搜索可能不同,我无法预测用户将搜索的内容,并且每次完成API调用时都会有一个已建立的解析结构等待它们。

问题是如何在我的应用程序中使用JSON解析结构来处理来自不同API调用的未定义/不可预测的JSON对象?

基本上我需要的是一种处理不可预测和未知的JSON对象的方法,就像它们已知并且我可以解析它们的密钥和它们内部的数据。

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用ObjectMapper将JSON转换为某些键值结构对象,如Map或HashMap:

range(3, int(math.sqrt(n) + 1, 2)

Map<String,Object> result = new ObjectMapper().readValue(jsonData, Map.class);可以是文件,流,字节,字符串...... ....

此处提供更多详细信息:https://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/ObjectMapper.html#readValue(byte[],%20java.lang.Class)

答案 1 :(得分:0)

如果我有你的代码,我会帮助更多,但希望我的解释对你有用。我最近创建了一个应用程序,用于选择用户在服务器端输入的内容并在手机上显示。例如,你选择米饭和鱼,而另一个人选择米饭,鱼,咖啡和烤豆。这些是不同的东西,但我做了一个数组来保存东西,数组的长度取决于你选择的东西的数量。然后我构建一个json对象来解析。注意:您可以计算用户放置的项目数量和变量中的安全性,然后将该变量用作长度。

JSONObject jsonObject = new JSONObject(response);
            if (jsonObject.getString(KEY_SUCCESS).equals("true")) {
              JSONArray dataArray = jsonObject.getJSONArray("data");
                for (int i = 0; i < dataArray.length(); i++) {

                   JSONObject dataobj = dataArray.getJSONObject(i);

我用“数据”保存了所有用户输入。有一点我的回答可能不符合您的描述,因为我不确定您是从用户那里获得列表输入还是长段/文章。我以为你得到一个列表,所以我给你一个使用数组的选项