[英]Detect type of JSON attribute
JSON:
{"attribute1":11, "attribute2":"string atribute"}
我想检测attribute1和attribute2是什么类型:
jsonObject.getAttributeType("属性2"); // 应该是 output:字符串/整数/布尔值。
在 PHP 或 OBJC 中很容易实现。 建议?
(我假设org.json
包的Android与你在json.org网站上找到的相同...... 这里 。)
JSONObject
唯一能为您提供基础值而不强制它的方法是JSONObject.get(name)
。 如果name
已知,则结果是在内部表示值的对象。 我没有对代码进行全面的拖网,但我认为它只能是以下类型之一:
Boolean, Long, Double, String, JSONArray, JSONObject
您应该能够使用instanceof
来区分它们。
但是应该问自己这是否是正确的做法。 通过JSONObject
API处理JSON对象属性的常规方法是使用将它们强制转换为您期望的类型的方法。 在大多数情况下,如果一个号码被发送为42
或42.0
或"42"
并不重要......如果意图很容易确定,最好不要挑剔。
另一种解决方案,您可以使用jackson库来执行此操作,
import com.fasterxml.jackson.databind.JsonNode;
import com.github.fge.jackson.JsonLoader;
//Defining the JSON object
JSON json = {"attribute1":11, "attribute2":"string atribute"};
//Get the needed attribute
String value = json.get("attribute1");
//Convert the attribute to JsonNode
JsonNode value = JsonLoader.fromString(value);
//Then you can check type as below
value.isObject();
value.isArray();
value.isDouble();
value.isTextual();
value.isInt()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.