从JSONArray获取值的简便方法

时间:2016-03-18 19:43:57

标签: java json

我最近开始使用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"}]

有没有办法轻松消除这些谓词名称/值,只是将实际名称和值组合在一起(如第一个示例中所示)?

1 个答案:

答案 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)