java - 如何将获得的这个字符串传递给 jsonObject 格式?
问题描述
执行代码我得到一个具有以下值的字符串"idStation=6107AAE80593E4B2×tamp=1558524847&pm1=0.800&pm2_5=1.510&pm10=2.650&temperature=22.380&humidity=40.379&pressure=93926.656&luminosity=131&coC=0.440923810000&no2C=0.000000000000&o3C=8.210327100000&batteryLevel=27&batteryCurrent=0&baterryVolts=3.63"
我的目标是将那个String转换成JsonObject格式,每个值都是分开的,即idstation = 6107AAE80593E4B2等,以后可以继续处理数据
这个想法是以 no2 的值为例,并将其保存在类型的变量中(映射字符串,对象)
eventPayload.put ("no2", String.valueOf (no2));
字符串的值编码在变量“sinCifrar”中
我尝试了以下代码,但我遇到了问题:
'String jsonString = sinCifrar;
JSONObject jsonk = new JSONObject(jsonString);
no2 = (((jsonk.getDouble("pressure")/101325.0)*(jsonk.getDouble("no2C")/1000)*46.0055)/(0.082*(jsonk.getDouble("temperature")+273.15)))*1000000.0;
co = (((jsonk.getDouble("pressure")/101325.0)*(jsonk.getDouble("coC")/1000)*28.01)/(0.082*(jsonk.getDouble("temperature")+273.15)))*1000000.0;
o3 = (((jsonk.getDouble("pressure")/101325.0)*(jsonk.getDouble("o3C")/1000)*48.0)/(0.082*(jsonk.getDouble("temperature")+273.15)))*1000000.0;'
我收到以下错误:
org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
由于它不是从一开始就创建的字符串,而是在执行了几个方法后获得的,所以我不能将它保留为请求的格式,有什么想法吗?
解决方案
该字符串不是有效的 JSON,但您想要的,可以使用简单的 java 代码来实现,如下所示
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String test = "idStation=6107AAE80593E4B2×tamp=1558524847&pm1=0.800&pm2_5=1.510&pm10=2.650&temperature=22.380"
+ "&humidity=40.379&pressure=93926.656&luminosity=131&coC=0.440923810000&no2C=0.000000000000&o3C=8.210327100000&"
+ "batteryLevel=27&batteryCurrent=0&baterryVolts=3.63";
String[] result = test.split("&");
Map<String, String> map = new HashMap<String, String>();
for (String string : result) {
String[] str = string.split("=");
map.put(str[0], str[1]);
}
double pressure = Double.valueOf(map.get("pressure"));
double no2C = Double.valueOf(map.get("no2C"));
double tempreture = Double.valueOf(map.get("temperature"));
double o3C = Double.valueOf(map.get("o3C"));
double cOC = Double.valueOf(map.get("coC"));
System.out.println("Pressure:: "+pressure+" , no2c :: "+no2C+", tempreture:: "+tempreture+" ,o3C:: "+o3C+" ,coC:: "+cOC);
}
输出
Pressure:: 93926.656 , no2c :: 0.0, tempreture:: 22.38 ,o3C:: 8.2103271 ,coC:: 0.44092381
从地图中,您可以获得所需的任何 Key 值。
推荐阅读
- hadoop - Hive解释计划理解
- python - 使用opencv将图像转换为视频
- python - 获取每组的前 2 个最高值
- php - 变量“organization_name”不存在。在 OroCommerce 中
- ms-access - MS 访问 - GUID
- php - FuelPHP 从 1.7.2 升级到 1.8.1 后,查询生成器中的编译错误
- java - Index Lucene:如何获取 LongPoint 字段的 PointValues 项
- sql - sql中的舍入错误
- angularjs - 无法根据点击在循环内显示和隐藏 div
- html - 如何将 HTML 文件导入 React 组件并将其用作组件?