繁体   English   中英

检测 JSON 属性的类型

[英]Detect type of JSON attribute

JSON:

{"attribute1":11, "attribute2":"string atribute"}

我想检测attribute1和attribute2是什么类型:

  • attribute1 是 integer
  • 属性 2 是字符串

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对象属性的常规方法是使用将它们强制转换为您期望的类型的方法。 在大多数情况下,如果一个号码被发送为4242.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM