0

我有 Java 代码可以通过蓝牙在 Android 应用程序中接收数据,就像附加的代码一样

Java 代码

所以 readMessage 将等于 ={\"Pin\":\"A4\",\"Value\":\"20\"},{\"Pin\":\"A5\",\"Value\":\"925\"},{\"Pin\":\"A0\",\"Value\":\"30\"}

所以我只想\"Value\"从接收到的数据中获取字符串之后的值,所以

谁能建议如何做到这一点?谢谢

4

2 回答 2

1

readMessage你可以用JSON格式解析

例子:

String[] pinValueArr = readMessage.split(",")
for (String pinValue : pinValueArr) {
    try {
        JSONObject pinValueJSON = new JSONObject(pinValue);
        String pin = pinValueJSON.optString("pin", "");  // opt means if parse failed, return default value what is ""
        int pin = pinValueJSON.optInt("Value", 0);   // opt means if parse failed, return default value what is "0"
    } catch (JSONParsedException e) {
        // catch exception when parse to JSONObject failed
    }
}

如果你想管理它们,你可以创建一个List并添加它们。

List<JSONObject> pinValueList = new ArrayList<JSONObject>();
for (String pinValue : pinValueArr) {
    JSONObject pinValueJSON = new JSONObject(pinValue);
    // ..
    pinValueList.add(pinValueJSON);
}
于 2020-06-15T01:12:08.447 回答
0

您可以使用 Gson 将 Json 转换为 Object。(https://github.com/google/gson

  1. 创建模型类
data class PinItem(
           @SerializedName("Pin")
           val pin: String? = null,
           @SerializedName("Value")
           val value: String? = null
       )
  1. 转换你的 json。
    val json = "[{"Pin":"A4","Value":"20"},{"Pin":"A5","Value":"925"},{"Pin":"A0","Value":"30"}]"

    val result =  Gson().fromJson(this, object : TypeToken<List<PinItem>>() {}.type)
  1. 所以现在你有了列表PinItem,你可以从中获取所有信息。
于 2020-06-15T02:46:43.647 回答