我最近开始使用Java中的JSON。我们一直在设置并从这个JSONArray获取我们的值:
[{"productId":"1"},{"productName":"hammer"}]
JSONObject jo = ja.getJSONObject(0);
我们可以通过调用jo.getString("productId");
来轻松获取值,这将返回1。
问题是有时我们会得到不同类型的JSON对象。它们看起来像这样:
[{"name":"productId", "value":"1"},{"name":"productName", "value":"hammer"}]
有没有办法轻松消除这些谓词名称/值,只是将实际名称和值组合在一起(如第一个示例中所示)?
答案 0 :(得分:0)
简短的回答是否定的。
更长的答案是你没有使用JSON,你正在处理某人对JSON的误解。
你的两个例子看起来都像JSON,但它们都是假的。
use re '/ix';
"FOO" =~ / foo /; # /ix implied
no re '/x';
"FOO" =~ /foo/; # just /i implied
是一个数组
[]
是一个对象
您的第一个字符串{}
是一个包含两个对象的数组,其中每个对象都有一个属性。
将不同的对象放在一个数组中会让人感到困惑,但这两个例子都在进行
第二个示例[{"productId":"1"},{"productName":"hammer"}]
显示了两个对象的数组,但同样,对象也不相同
我认为他们想要的更像是[{"name":"productId", "value":"1"},{"name":"productName", "value":"hammer"}]
,所以我想你问题的答案很长,你需要去提供这个“JSON”并告诉他们修复它。
为了让您更清楚地了解对象(Java和其他)与JSON之间的对应关系,请查看以下Java程序:
[{"productId":"1","productName":"hammer"}]
这是显示正确JSON表示的输出:
一个对象
public class Product {
String productName;
String productId;
public Product(String productId,String productName){
this.productName = productName;
this.productId = productId;
}
public String toString(){return toJSONString();}
public String toJSONString(){
return "{\"productId\":\""+productId+",\"productName:\""+productName+"\"}";
}
public static String arrayToJSONString(Product[] arry){
StringBuilder sb = new StringBuilder();
sb.append("["+arry[0]);
for (int n =1;n<arry.length;n++){
sb.append(","+arry[n]);
}
sb.append("]");
return sb.toString();
}
public static void main(String [] args){
Product p1 = new Product("1","hammer");
Product[] arry = {p1};
Product[] arry2 ={p1,new Product("2","shovel"), new Product("3","manure")};
System.out.println("One object");
System.out.println(" "+p1);
System.out.println("An array containing one object");
System.out.println(" "+Product.arrayToJSONString(arry));
System.out.println("An array containing three objects");
System.out.println(" "+Product.arrayToJSONString(arry2));
}
}
包含一个对象的数组
{"productId":"1,"productName:"hammer"}
包含三个物体的阵列
[{"productId":"1,"productName:"hammer"}]
(Newlines是HTML的工件,而不是JSON)