为了账号安全,请及时绑定邮箱和手机立即绑定

如何将获得的这个 String 传递给 jsonObject 格式?

如何将获得的这个 String 传递给 jsonObject 格式?

MYYA 2022-12-21 14:42:39
执行代码我得到一个具有以下值的字符串"idStation=6107AAE80593E4B2&timestamp=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 的值为例,并将其保存在类型为 (Map String, Object) 的变量中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]由于它不是从一开始就创建的字符串,而是在执行多个方法后获得的,所以我不能保留它所要求的格式,知道吗?
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

该字符串不是有效的 JSON,而是您想要的,可以使用如下简单的 Java 代码实现


public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {

    String test = "idStation=6107AAE80593E4B2&timestamp=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 值。


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信