我需要将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的数据。(仅可以顺序访问)
请为此提供解决方案,以便随机访问数据并获得相对较快的性能。
答案 0 :(得分:0)
您无法使用stream
作为移动设备获得GB中的client
数据,您必须对其进行优化以根据需要发送数据。
您可以使用一些API来调解您的服务器数据(Database
)和客户端(Mobile
),而不是将其作为文件读取。
根据您想要的信息,您可以告诉API这样的内容
www.example.com/api/readRecords ? fromID=20 & toID=25
我已经包含了易于阅读的空间。通过这种方式,您可以检索从ID 20
到25
的数据,这些内容看起来像这样,当然可以使用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数组存储在那里,并根据需要进行查询。