Php 从arraylist android创建json数组

Php 从arraylist android创建json数组,php,android,json,Php,Android,Json,我已经玩了一段时间了,我正在寻求帮助。我有一个ArrayList,我把它变成JSONArray,然后放在JSONObject中。问题是我的格式。让我给你看看 我获取我的ArrayList的值,然后像这样添加它们(小代码段) 这是可行的,但添加“:”是我问题的开始。日志打印出来了 06-19 12:13:33.630: V/INFO(3272): Storing: Height: 6`4 现在,当我创建要发送的JSON时,我使用以下命令 if (error.getText().toString(

我已经玩了一段时间了,我正在寻求帮助。我有一个
ArrayList
,我把它变成
JSONArray
,然后放在
JSONObject
中。问题是我的格式。让我给你看看

我获取我的
ArrayList
的值,然后像这样添加它们(小代码段)

这是可行的,但添加“:”是我问题的开始。日志打印出来了

06-19 12:13:33.630: V/INFO(3272): Storing: Height: 6`4
现在,当我创建要发送的
JSON
时,我使用以下命令

if (error.getText().toString().equals("")) {
    JSONObject json = new JSONObject();
    JSONArray jArray = new JSONArray(myList);
    try {
       json.putOpt("array", jArray);
    } catch (JSONException e) {
       e.printStackTrace();
    }
同样,这是有效的。现在问题已经清楚地说明了,它像这样打印出
JSON

{
  "array":
  [
    "Store #: 00608",
    "Phone #: null",
    "Address: 3014 N. SCOTTSDALE RD.",
    "City: SCOTTSDALE",
    "Zip: 85251",
    "State: AZ",
    "Height: 6`4",
    "Weight: 230",
    "Ethnicity: White",
    "Age: 23",
    "Eye Color: Blue",
    "Favorite Food: Thai",
    "Comments: awesome"
   ]
}
{
  "array":
  [
    "Store #" :  "00608",
    "Phone #" : "null",
    "Address" : "3014 N. SCOTTSDALE RD.",
    "City" : "SCOTTSDALE",
    "Zip" : "85251",
    "State" : "AZ",
    "Height" : "6`4",
    "Weight" : "230",
    ....
   ]
}
如果你熟悉JSON,你就会知道我在这里搞错了。我只是想把问题和答案放在一起。然而,通过在中间添加“:”看起来我正试图使用问题作为
,而答案作为
(某种程度上)。不管怎么说,最终这看起来像是合法的
JSON
,确实如此,但它没有按照我需要的方式工作

我的问题是,我是否应该将“问题”设置为
键,将
值设置为“回答”

如果是这样,我将如何创建我的
JSONArray
,使我的
JSON
看起来像这样

{
  "array":
  [
    "Store #: 00608",
    "Phone #: null",
    "Address: 3014 N. SCOTTSDALE RD.",
    "City: SCOTTSDALE",
    "Zip: 85251",
    "State: AZ",
    "Height: 6`4",
    "Weight: 230",
    "Ethnicity: White",
    "Age: 23",
    "Eye Color: Blue",
    "Favorite Food: Thai",
    "Comments: awesome"
   ]
}
{
  "array":
  [
    "Store #" :  "00608",
    "Phone #" : "null",
    "Address" : "3014 N. SCOTTSDALE RD.",
    "City" : "SCOTTSDALE",
    "Zip" : "85251",
    "State" : "AZ",
    "Height" : "6`4",
    "Weight" : "230",
    ....
   ]
}
因此,一个简单的

var_dump(json_decode($json));
var_dump(json_decode($json, true));
PHP
中,将为我提供服务器端所需的数据

或者在服务器端解析字符串时,保留此格式并拆分字符串会更简单吗?无论你选择哪个答案,请提供几行代码来说明你的答案。你可以看出我是一个视觉化的人


谢谢你的帮助,我希望这对其他人也有帮助

我不确定您是否可以在JSON中执行以下操作

[ "key":"value, ...."].
您可以使用键值对象对执行此操作,如中所示

[ {"key":"value"},...]
如果使用对象,则必须为每对对象创建一个新对象,这可能会变得非常复杂,因为JSON中的键与实例变量的名称相对应


我的建议是让它保持你现在的样子,把弦分开。我不熟悉PHP,但它应该很简单,只要在JSON数组中循环,并在字符串上调用类似split(“:”)的东西。

我不确定您是否可以在JSON中执行以下操作

[ "key":"value, ...."].
您可以使用键值对象对执行此操作,如中所示

[ {"key":"value"},...]
如果使用对象,则必须为每对对象创建一个新对象,这可能会变得非常复杂,因为JSON中的键与实例变量的名称相对应


我的建议是让它保持你现在的样子,把弦分开。我不熟悉PHP,但它应该很简单,只要在JSON数组中循环,并在字符串上调用类似split(“:”)的东西。

您可以使用动态键创建JSONObject,如下所示:

{
    "Store #" :  "00608",
    "Phone #" : "null",
    "Address" : "3014 N. SCOTTSDALE RD.",
    "City" : "SCOTTSDALE",
    "Zip" : "85251",
    "State" : "AZ",
    "Height" : "6`4",
    "Weight" : "230",
    ....
}
什么是更简单的问题,只能由您自己回答,因为很明显,您实现了应用程序和服务器部分。所以,对你最有效的方法就是正确的方法。
就性能而言,一边连接字符串,另一边拆分字符串并不是最好的,但这还取决于数组中有多少个条目。

您可以使用动态键创建JSONObject,如下所示:

{
    "Store #" :  "00608",
    "Phone #" : "null",
    "Address" : "3014 N. SCOTTSDALE RD.",
    "City" : "SCOTTSDALE",
    "Zip" : "85251",
    "State" : "AZ",
    "Height" : "6`4",
    "Weight" : "230",
    ....
}
什么是更简单的问题,只能由您自己回答,因为很明显,您实现了应用程序和服务器部分。所以,对你最有效的方法就是正确的方法。
就性能而言,在一端连接字符串并在另一端拆分它们并不是最好的方法,但这还取决于数组中有多少个条目。

您可以通过多种方法解决此问题。如果你想保持格式化的方式,你只需要先处理你的字符串。当您从
ArrayList
获取值时,只需将组合拆分为多个部分

int splitPoint = combo.indexOf(":")
String key = combo.substring(0, splitPoint);
String value = combo.substring(splitPoint + 1);
将键和值拆分后,只需创建一个新的
JSONObject
,并将键和值作为字符串添加

JSONObject jObject = new JSONObject();
jObject.put(key, value);
这将把JSONString添加到它自己的JSONObject中。然后可以将该对象添加到要创建的JSONArray中

JSONArray jArray = new JSONArray();
jArray.puJSONObject(jObject);

我将其分解为几个部分,但如果您只需将
JSONArray
去掉for循环或其他迭代器,然后在
ArrayList
中循环,处理每个组合字符串并将结果对象添加到
JSONArray
中,您就可以实现所需的结果

您可以通过多种方法解决这个问题。如果你想保持格式化的方式,你只需要先处理你的字符串。当您从
ArrayList
获取值时,只需将组合拆分为多个部分

int splitPoint = combo.indexOf(":")
String key = combo.substring(0, splitPoint);
String value = combo.substring(splitPoint + 1);
将键和值拆分后,只需创建一个新的
JSONObject
,并将键和值作为字符串添加

JSONObject jObject = new JSONObject();
jObject.put(key, value);
这将把JSONString添加到它自己的JSONObject中。然后可以将该对象添加到要创建的JSONArray中

JSONArray jArray = new JSONArray();
jArray.puJSONObject(jObject);

我将其分解为多个部分,但如果您只是在
JSONArray
中添加for循环或其他迭代器,然后在
ArrayList
中循环,处理每个组合字符串并将结果对象添加到
JSONArray
您可以获得所需的结果

我认为这是最完整的答案,因此我接受它。我决定保留格式并在服务器端拆分字符串。我将简单地在数组中运行for循环,并将值放置在需要它们的地方。谢谢我认为这是最完整的答案,所以我接受了。我决定保留格式并在服务器端拆分字符串。我将简单地在数组中运行for循环,并将值放置在需要它们的地方。谢谢你是对的,这就是我需要做的。我必须将每个问题和答案放入它自己的对象中,然后将其填充到数组中,然后填充到对象中,然后。。。嗯。复杂。按照我的方式,将其拆分为服务器端要容易得多你是对的