【问题标题】:Json string to json object conversionJson 字符串到 json 对象的转换
【发布时间】:2015-01-13 04:01:13
【问题描述】:

我一直在寻找类似的问题,但我无法解决我的问题。我尝试将我的 json 响应解析为 Json 数组和 Json 对象,但每次,我都会得到字符串到 json 对象的异常。 我想可能是我的 Json 响应有问题。

results = { "type": 1, "user_log": "ahsan.tahir.92_/var/www/html/2014-10-11__15-54-52__50sec.txt_res", "freq": 0.01, "coordina": [ [-37], [-9], [-20], [-12], [-22], [-9], [-22], [-15], [-25], [-7], [-20], [-12], [-20], [-9], [-25], [8], [-23], [-11], [-18], [-13], [-19], [-10], [-21], [-12], [-25], [-11], [-17], [-12], [-22], [-13], [-21], [3] ], "tot_time": 40.11, "tot_distace": 100, "stroke_each_pool": [ [16], [16] ], "tot_stroke": [ [16], [16] ], "split": [ [20.22], [19.89] ], "timing_turn": 7.04, "cycle_Rate_l": [ [2.22], [2.2680001] ], "cycle_Rate_r": [ [2.224], [2.27] ], "mean_velocity": [ [2.4727993], [2.5138261] ], "stroke_length": [ [3.125], [3.125] ], "stroke_freq": [ [79.077431], [77.419357] ], "roll_peaks": [ [-44.10043335], [55.79428101], [-61.51541138], [54.7466507], [-62.09820557], [55.01488495], [-62.48770142], [53.44023132], [-70.32449341], [51.8399353], [-65.84837341], [53.5617981], [-63.50210571], [55.9821167], [-62.37905121], [39.42669678], [-43.44207764], [63.20912933], [-59.19660187], [50.6708374], [-63.8214798], [54.57595062], [-63.31864166], [53.82037354], [-66.93650818], [52.36277008], [-65.23461151], [52.89829254], [-62.78508759], [51.17367554], [-62.87123108], [59.13114929] ], "mean_roll_dx": [ [52.475822], [54.73027] ], "mean_roll_sx": [ [61.531971], [60.950779] ], "std_roll_dx": [ [5.4471908], [4.3127728] ], "std_roll_sx": [ [7.6123171], [7.4134283] ], "mean_roll": [ [57.003899], [57.840527] ], "std_roll": [ [7.9220791], [6.6817732] ], "mean_pitch": [ [-5.5227709], [-5.2282872] ], "std_pitch": [ [-5.5227709], [-5.2282872] ], "clean_stroke_time": [ [15.92], [16.84] ], "errore": 227, "fatal_error": { "_ArrayType_": "double", "_ArraySize_": [0,0], "_ArrayData_": null } }

我是这样解析的:

JSONObject reader = new JSONObject(in);
            JSONObject sys  = reader.getJSONObject("results");

知道我在这里缺少什么吗?

我的例外如下:

org.json.JSONException: Value type of type java.lang.String cannot be converted to JSONObject

【问题讨论】:

  • “results =”是您回复的一部分吗?
  • 从你的 json 响应中删除 "result=" ,只有它是有效的 json 字符串
  • 首先验证您的 JSON :jsonlint.com

标签: java javascript android json


【解决方案1】:

您发布的results 字符串中没有results 字段,这就是问题所在。无论如何,请继续并重新格式化您的问题,以更准确地反映您在做什么,并包含您看到的错误消息。

实际上,您指的是 JSON 输出中的错误消息吗?这似乎是由您调用的任何服务输出的 JSON 编码的错误消息。您传递给该服务的数据似乎存在问题。

【讨论】:

    【解决方案2】:

    这个:

    results = {rest of response here}
    

    不是有效的 JSON。

    也许你打算返回这个:

    {"results": {rest of response here}}
    

    ...或者只是

    {rest of response here}
    

    【讨论】:

    • 是的,这就是问题所在。谢谢
    【解决方案3】:

    我可能误解了您的问题,但是您在哪里使用类似的东西解析 Json 响应 JSONObject jsonObject = (JSONObject) jsonParser.parse(strippedJSON); 从 API 收到的响应剥离 JSON。

    【讨论】:

    • 我的观点是,只是将字符串响应传递给 json 对象的构造函数,例如: JSONObject reader = new JSONObject(ResponseString);会做这项工作吗?
    【解决方案4】:

    您的reader 对象就是您的results 对象本身。

    JSONObject resultsJSON = new JSONObject(in);
    System.out.println("User Log: " + resultsJSON.get("user_log"));
    

    您收到异常是因为您的输入 JSON 字符串中没有 results 对象,即您收到的 results 对象周围没有 JSON 包装器。

    【讨论】:

      【解决方案5】:

      如果您使用的是 javascript 试试这个

      var parsed_data = JSON && JSON.parse(结果) || $.parseJSON(结果);

      【讨论】:

        猜你喜欢
        • 2018-05-03
        • 1970-01-01
        • 2019-08-27
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-03
        相关资源
        最近更新 更多