0

org.jsonのtoString()メソッドを使用して、典型的な Java オブジェクトを文字列化しようとしています。ただし、Bean のコレクションまたは配列型のメンバーは、バイト配列の形式で文字列化されています。問題を説明するためにサンプルコードを用意しました。

これが私が期待していることです:

{
   "nonWorkingDays":[
      "Saturday",
      "Sunday"
   ],
   "workingDays":[
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
   ],
   "days":[
      1,
      2,
      3,
      4,
      5,
      6,
      7
   ]
}

そして、ここに私が代わりに得ているものがあります:

{
  "nonWorkingDays": [
    {
      "bytes": [
        {},
        {}, ...
      ],
      "empty": false
    },
    {
      "bytes": [
        {},
        {}, ...
      ],
      "empty": false
    }
  ],
  "workingDays": [
    {
      "bytes": [
        {},
        {}, ...
      ],
      "empty": false
    },
    {
      "bytes": [
        {},
        {}, ...
      ],
      "empty": false
    }, ...
  ],
  "days": [
    {},
    {}, ...
  ]
}

最後に、ここに私のコードがあります:

/* Week.java */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Week {
    private List<String> workingDays = new ArrayList<String>();
    private String[] nonWorkingDays;
    int days[];

    public Week() {
        String[] workingDaysArray = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
        workingDays.addAll(Arrays.asList(workingDaysArray));
        nonWorkingDays = new String[] { "Saturday", "Sunday" };
        days = new int[] { 1, 2, 3, 4, 5, 6, 7 };
    }

    public List<String> getWorkingDays() {
        return workingDays;
    }

    public String[] getNonWorkingDays() {
        return nonWorkingDays;
    }

    public int[] getDays() {
        return days;
    }

    @Override
    public String toString() {
        return "Week [workingDays=" + workingDays + ", nonWorkingDays=" + Arrays.toString(nonWorkingDays) + ", days="
                + Arrays.toString(days) + "]";
    }
}

/* WeekTest.java */

import org.json.JSONException;
import org.json.JSONObject;

public class WeekTest {
    public static void main(String[] args) throws JSONException {
        Week myWeek = new Week();
        JSONObject myWeekJSON = new JSONObject(myWeek);
        String myWeekJSONString = myWeekJSON.toString(2);
        System.out.println(myWeekJSONString); // Formatted JSON string
        System.out.println(myWeek); // Output from Week's toString()
    }
}

ところで、Week の toString() メソッドの出力は次のとおりです。

Week [workingDays=[Monday, Tuesday, Wednesday, Thursday, Friday], nonWorkingDays=[Saturday, Sunday], days=[1, 2, 3, 4, 5, 6, 7]]

編集:

問題はこの maven artifactにあるようです。この github リポジトリからソースに更新した後、すべてが修正されました。以下のコメントを参照してください。

4

0 に答える 0