我有一个代码,可以从db使用Hibernate获取List
个对象。对象的一个字段具有XML格式。我在jsp
文件中使用此代码获取该字段值:
for(PluginMonitor pm : list ) {
// parsing xml to json
JSONObject metricsFieldValue = org.json.XML.toJSONObject(pm.getMetrics());
Object metricMetric = metricsFieldValue.get("metric");
}
metricsFieldValue
的输出
{
"metric": [
{
"defaultThreshold": "0",
"preselected": "true",
"uom": "B/sec",
"name": "BytesReceivedPersec",
"type": "integer",
"displayName": "Input Traffic"
},
{
"defaultThreshold": "0",
"preselected": "true",
"uom": "B/sec",
"name": "BytesSentPersec",
"type": "integer",
"displayName": "Output Traffic"
}
]
}
因此metricMetric
的输出是一个数组,但我只需要该数组中每个对象的displayName
和name
。任何想法如何获得这些价值观。
答案 0 :(得分:1)
尝试单独使用Strings;
String displayName = jo.getJSONArray("metric").getJSONObject(i).getString("displayName");
String name = jo.getJSONArray("metric").getJSONObject(i).getString("name");
答案 1 :(得分:0)
JSONObject
有一个构造函数,可以从另一个JSONObject
public JSONObject(JSONObject jo, java.lang.String[] names)
从另一个JSONObject的子集构造一个JSONObject 字符串数组用于标识应复制的键 缺少密钥会被忽略。
在你的情况下,你会像这样使用它:
String[] fields = new String[] {"displayName", "name"};
JSONObject onlyNames = new JSONObject(metricsFieldValue, fields);
答案 2 :(得分:0)
JSONArray metric = new JSONArray();
metric = metricsFieldValue.getJSONArray("metric");
for(int i=0; i< metric.length(); i++){
JSONObject jsonObject = metric.getJSONObject(i);
String displayName = jsonObject.get("displayName");
String name = jsonObject.get("name");
}
如果您正在使用(导入)org.json.simple.JSONArray
,则必须使用JSONArray.size()
来获取所需的数据。但如果您使用的是JSONArray.length()
,请使用org.json.JSONArray
。
答案 3 :(得分:0)
这就是它的工作原理
const char* lookup(const char* extension);
int main(void)
{
const char* type = "css";
const char* ending = lookup(type);
printf("the exstension: %s\nis of type = %s\n", type, ending);
}
const char* lookup(const char* extension)
{
char temp[strlen(extension)];
for (int i = 0; i < strlen(temp); i++)
{
if (isalpha(extension[i]))
temp[i] = tolower(extension[i]);
}
printf("temp = %s\n", temp);
char* filetype = NULL;
if (strcmp(temp, "html") == 0)
strcpy(filetype, "text/html");
else if(strcmp(temp, "css") == 0)
strcpy(filetype, "text/css");
else if(strcmp(temp, "js") == 0)
strcpy(filetype, "text/js");
else if(strcmp(temp, "jpg") == 0)
strcpy(filetype, "image/jpg");
else if(strcmp(temp, "ico" ) == 0)
strcpy(filetype, "image/x-icon");
else if(strcmp(temp, "gif") == 0)
strcpy(filetype, "image/gif");
else if(strcmp(temp, "png") == 0)
strcpy(filetype, "image/png");
else
return NULL;
return filetype;
}