使用java将String转换为JSONArray

时间:2016-06-21 05:02:38

标签: java json

我需要将String转换为JSONArray

字符串大小可能从小Kbs(10kb)到GB(1或2 GB)不等。

我的问题在下面详细解释:

我已将文件保存如下

    {
        "data1": false,
        "data2": “content,
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-16 10:12:57.287Z",
        "dataid": "12315005",
        "data6": "out"
    },
    {
        "data1": false,
        "data2": “cccdeevevev”,
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-02 17:48:13.000Z",
        "dataid": "12311276",
        "data6": "in"
    },
    {
        "data1": false,
        "data2": “dfsfergtrhtryjrutjbnhj”,
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-02 17:48:13.000Z",
        "dataid": "12312272",
        "data6": "in"
    },
    {
        "data1": false,
        "data2": "dfsfergtrhtryjrutjbnhjwdwefwevqeqwre”,
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-02 16:59:27.000Z",
        "dataid": "12312336",
        "data6": "in"
    },
    {
        "data1": false,
        "data2": "Cccccccl",

        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-02 16:59:27.000Z",
        "dataid": "12311340",
        "data6": "in"
    },
    {
        "data1": false,
        "data2": "Check asqdwqd”,
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-02 16:56:46.000Z",
        "dataid": "12312340",
        "data6": "in"
    },
    {
        "data1": false,
        "data2": "Check wdwfdwfqfcw”,
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-02 16:56:46.000Z",
        "dataid": "12311344",
        "data6": "in"
    },
    {
        "data1": true,
        "data2": "text",
        "data3": false,
        "data4": false,
        "data5": "datavalue",
        "createdTime": "2016-06-01 20:01:51.000Z",
        "dataid": "12311099",
        "data6": "in"
    },
     

我目前正在做的是:

我正在阅读上面的文件并将其转换为字符串。在将字符串转换为JSONarray之前,我将最后一个逗号替换为""并分别在第一个和最后一个附加[和]。然后使用下面我将字符串转换为JSON数组:

JSONArray json = new JSONArray(String);

我正在使用org.json.JSONArray。

我已经保存了上面的文件,因为在我获得相关信息后,我会将其他类似的JSON对象附加到文件中。随后文件的大小会增加。

一旦文件大小增加,我现在在做什么会影响服务器的性能。

也无法从JSONArray进行随机访问。我需要遍历数组以获取一个数据ID的数据。(仅可以顺序访问)

请为此提供解决方案,以便随机访问数据并获得相对较快的性能。

2 个答案:

答案 0 :(得分:0)

您无法使用stream作为移动设备获得GB中的client数据,您必须对其进行优化以根据需要发送数据。

您可以使用一些API来调解您的服务器数据(Database)和客户端(Mobile),而不是将其作为文件读取。

根据您想要的信息,您可以告诉API这样的内容

www.example.com/api/readRecords ? fromID=20 & toID=25

我已经包含了易于阅读的空间。通过这种方式,您可以检索从ID 2025的数据,这些内容看起来像这样,当然可以使用GSON

{
  data: [
    {
      "data1": false,
      "data2": “content,
      "data3": false,
      "data4": false,
      "data5": "datavalue",
      "createdTime": "2016-06-16 10:12:57.287Z",
      "dataid": "12315005",
      "data6": "out"
    },
    {
      "data1": false,
      "data2": “cccdeevevev”,
      "data3": false,
      "data4": false,
      "data5": "datavalue",
      "createdTime": "2016-06-02 17:48:13.000Z",
      "dataid": "12311276",
      "data6": "in"
    },
    {
      "data1": false,
      "data2": “dfsfergtrhtryjrutjbnhj”,
      "data3": false,
      "data4": false,
      "data5": "datavalue",
      "createdTime": "2016-06-02 17:48:13.000Z",
      "dataid": "12312272",
      "data6": "in"
    }
  ],
  metaData: {
    fromID: 20,
    toID: 22
  }
}

并且会在响应中附加一些MetaData,以便客户端(Mobile)更容易知道您要发送的内容

答案 1 :(得分:-1)

您应该使用某些非关系型数据库,例如Mongo DB。 JSON也是Mongo的基本格式。将json数组存储在那里,并根据需要进行查询。

Mongo DB