将数组转换为json

时间:2016-03-21 15:43:04

标签: java json

我有一个多维数组,它有整数和字符串值。我想以json格式转换数组并将其发送回ajax函数。我正在尝试打印数组内容以进行检查,但我无法这样做。

Os[] o1 = new os[];
o1[0].os_name = "xyz";
o1[0].os_id = 1;
JSONArray jsArray = new JSONArray(o1);

for (int i = 0; i < jsArray.length(); ++i) {
    JSONObject rec = jsArray.getJSONObject(i);
    int id = rec.getInt("os_id");
    String loc = rec.getString("os_name");
    System.out.println(id+loc);
}

我有一个os课程:

public class Os {

    int os_id;
    String os_name;

}

我收到错误:

  

找不到JSONObject [&#34; os_id&#34;]。

2 个答案:

答案 0 :(得分:0)

首先,您需要初始化数组正在使用的对象。 其次,您需要为评估者提供(gettters)以使Json API工作的Os对象属性

您的主要问题是您的bean中缺少getter。要解决此问题,请更改OS类:

public class Os {

    int os_id;
    String os_name;

    public int getOs_id() {
        return os_id;
    }

    public String getOs_name() {
        return os_name;
    }

}

然后您的更正代码将是:

// In Java the Arrays must have a size
Os[] o1 = new Os[1];

/* The Array contains only null values by default. You must create 
   objects and assign them to the newly created Array. 
   ( In your example, only one object is created)  */

Os anOs = new  Os();
anOs.os_name = "xyz";
anOs.os_id = 1;

// Assign the object to the Array index 0
o1[0]=anOs;

JSONArray jsArray = new JSONArray(o1);

for (int i = 0; i < jsArray.length(); ++i) {
  JSONObject rec = jsArray.getJSONObject(i);
  int id = rec.getInt("os_id");
  String loc = rec.getString("os_name");
  System.out.println(id+loc);
}

答案 1 :(得分:0)

假设你打算这样做

Os[] osArray = new Os[1];
Os os1 = new Os();
os1.os_id = 1;
os1.os_name = "xyz";
osArray[0] = os1;

JSONArray jsonArray = new JSONArray(osArray);
  

我正在尝试打印数组内容

你可以这样做

System.out.println(jsonArray.toString());

这将在数组中打印一个空的JSON对象。

[{}]

因此,您的错误是有道理的,因为您有一个没有键的空对象。

要解决此问题,请更新您的课程

public class Os {
    int os_id;
    String os_name;

    public int getOs_id() {
        return os_id;
    }

    public String getOs_name() {
        return os_name;
    }
}

现在你会看到

[{"os_id":1,"os_name":"xyz"}]