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循环,并将值放置在需要它们的地方。谢谢你是对的,这就是我需要做的。我必须将每个问题和答案放入它自己的对象中,然后将其填充到数组中,然后填充到对象中,然后。。。嗯。复杂。按照我的方式,将其拆分为服务器端要容易得多你是对的