Tag: json lib

JSON-lib转义/保留字符串

我在java http://json-lib.sourceforge.net上使用JSON-lib库 我只是想添加一个看起来像JSON的简单字符串(但我不希望库自动弄清楚它可能是json而只是将它视为字符串)。 看看图书馆的来源我找不到没有丑陋黑客的方法。 例: JSONObject object = new JSONObject(); String chatMessageFromUser = “{\”dont\”:\”treat it as json\”}”; object.put(“myString”, chatMessageFromUser); object.toString()将为我们提供{“myString”:{“dont”:”treat it as json”}} 我只想拥有{“myString”:”{\”dont\”:\”treat it as json\”}”} 如何在不修改源代码的情况下实现它? 我正在使用这段代码作为来自用户的聊天消息的传输 – 因此它适用于正常的聊天消息,但是当用户将输入JSON格式作为消息时,由于此处描述的JSON-lib的默认行为,它将打破它。

如何强制JSON-lib的JSONObject.put(..)转义包含JSON的字符串?

使用JSON-lib的JSONObject ,如何阻止put方法存储包含JSON作为JSON而不是转义字符串的String? 例如: JSONObject obj = new JSONObject(); obj.put(“jsonStringValue”,”{\”hello\”:\”world\”}”); obj.put(“naturalStringValue”, “\”hello world\””); System.out.println(obj.toString()); System.out.println(obj.getString(“jsonStringValue”)); System.out.println(obj.getString(“naturalStringValue”)); 打印: {“jsonStringValue”:{“hello”:”world”},”naturalStringValue”:”\”hello world\””} {“hello”:”world”} “hello world” 我希望它打印: {“jsonStringValue”:”{\”hello\”:\”world\”}”,”naturalStringValue”:”\”hello world\””} {“hello”:”world”} “hello world” 是的,我意识到这是令人讨厌的。 但是,这支持JSON序列化管道,为了互操作性,这是预期的行为。 在某些情况下,我们会序列化可能包含有效JSON的用户输入。 我们不希望用户输入成为我们将所述输入序列化的JSON对象的一部分。 手动转义不起作用,因为它导致JSON-lib转义\字符: JSONObject obj = new JSONObject(); obj.put(“naturalJSONValue”,”{\”hello\”:\”world\”}”); obj.put(“escapedJSONValue”, “{\\\”hello\\\”:\\\”world\\\”}”); System.out.println(obj.toString()); System.out.println(obj.getString(“naturalJSONValue”)); System.out.println(obj.getString(“escapedJSONValue”)); 输出: {“naturalJSONValue”:{“hello”:”world”},”escapedJSONValue”:”{\\\”hello\\\”:\\\”world\\\”}”} {“hello”:”world”} {\”hello\”:\”world\”} 此时,任何启用手动选择性转义复杂JSON对象的变通方法都会完全否定首先使用JSON-lib的价值。 另外,我知道之前已经提出这个问题,但不幸的是我不能轻易接受它的答案。 JSON-lib在我的项目的许多方面都是一个经常使用的依赖项,并且交换它将是一项艰巨的任务。 我需要绝对肯定在我可以接受与Jackson,simple-json或Gson的交换之前,没有办法用JSON-lib实现这个目标。

用java解析json

我是json解析的新手,我从请求中抓取了一个json字符串,现在我需要用java解析它。 我正在使用json-lib。 但我真的被困住,因为我不熟悉它。 我需要提取以下数据 1. name (hotel name) 2. starRating 3. geoPoint 我使用了以下java代码,但它没有给我我需要的结果,请有人帮助我… 非常感谢! java代码(s是我得到的json字符串) JSONObject json = (JSONObject) JSONSerializer.toJSON(s); JSONArray jarray = json.getJSONArray(“hotels”); for(int i=0 ; i < jarray.size(); i++) { System.out.println("jarray [" + i + "] ——–" + jarray.getString(i)); } json我需要解析 [ { “total”: 250, “offset”: 0, “requestID”: “-btygi09oxfov”, “locationName”: “Paris, France”, “locationLatitude”: […]