在本文中,我们将为您详细介绍json_encode将PHP数组稀疏为JSON数组,而不是JSON对象的相关知识,并且为您解答关于phpjson数组的疑问,此外,我们还会提供一些关于Android-Gs
在本文中,我们将为您详细介绍json_encode将PHP数组稀疏为JSON数组,而不是JSON对象的相关知识,并且为您解答关于php json数组的疑问,此外,我们还会提供一些关于Android-Gson解析JSON数据(JSON对象/JSON数组)、echo json_encode回到json对象,在前端获取到的却是字符串,而非json对象、echo json_encode返回json对象,在前端获取到的却是字符串,而非json对象、fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化的有用信息。
本文目录一览:- json_encode将PHP数组稀疏为JSON数组,而不是JSON对象(php json数组)
- Android-Gson解析JSON数据(JSON对象/JSON数组)
- echo json_encode回到json对象,在前端获取到的却是字符串,而非json对象
- echo json_encode返回json对象,在前端获取到的却是字符串,而非json对象
- fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
json_encode将PHP数组稀疏为JSON数组,而不是JSON对象(php json数组)
我在PHP中有以下数组:
Array( [0] => Array ( [id] => 0 [name] => name1 [short_name] => n1 ) [2] => Array ( [id] => 2 [name] => name2 [short_name] => n2 ))
我想将其JSON编码为JSON数组,产生类似以下内容的字符串:
[ { "id":0, "name":"name1", "short_name":"n1" }, { "id":2, "name":"name2", "short_name":"n2" }]
但是当我调用json_encode
此数组时,得到以下信息:
{ "0":{ "id":0, "name":"name1", "short_name":"n1" }, "2":{ "id":2, "name":"name2", "short_name":"n2" }}
这是一个对象而不是数组。
我怎样才能json_encode
将我的数组编码为数组呢?
答案1
小编典典您正在观察此行为,因为您的数组不是顺序的-它具有键0
和2
,但没有1
键。
仅具有数字索引是不够的。json_encode
仅当您的PHP数组是顺序的时,即如果其键为0、1、2、3,…时,才会将PHP数组编码为JSON数组。
您可以使用array_values
函数顺序地对数组重新索引以获得所需的行为。例如,以下代码在您的用例中可以成功运行:
echo json_encode(array_values($input)).
Android-Gson解析JSON数据(JSON对象/JSON数组)
上一篇博客,Android-解析JSON数据(JSON对象/JSON数组),介绍了使用 org.json.JSONArray;/org.json.JSONObject; 来解析JSON数据;
Google Android 还提供来另外一种方式来解析JSON数据,那就是Gson;
Gson是非常方便的JSON解析/封装/处理等等,强大的工具类:
特点:Gson可以把JSON对象数据->转换映射为Bean对象
Gson可以把JSON数组数据->转换映射为集合
Gson可以把Bean对象->转换为JSON对象数据
Gson可以把集合->转换为JSON数组数据
...........
首先要在app/build.gradle配置文件中,导入,Gson支持包
// Gson支持包的导入
implementation ''com.google.code.gson:gson:2.6.2''
需要解析的JSON数据:
/data/data/liudeli.mynetwork01/files/pottingJSON1
{
"name":"李四",
"age":99,
"hobby":"爱好是练习截拳道"
}
/data/data/liudeli.mynetwork01/files/pottingJSONArray1
[
{
"name":"君君",
"age":89,
"sex":"男"
},
{
"name":"小君",
"age":99,
"sex":"女"
},
{
"name":"大君",
"age":88,
"sex":"男"
}
]
定义一个Bean
定义的name/age/hobby 必须要和JSON数据里面的一模一样
package liudeli.mynetwork01.entity;
/**
* 定义一个Bean
* 定义的name/age/hobby 必须要和JSON数据里面的一模一样
* {
* "name":"李四",
* "age":99,
* "hobby":"爱好是练习截拳道"
* }
*/
public class Student2 {
private String name;
private int age;
private String hobby;
public Student2(String name, int age, String hobby) {
this.name = name;
this.age = age;
this.hobby = hobby;
}
@Override
public String toString() {
return "Student{" +
"name=''" + name + ''\'''' +
", age=" + age +
", hobby=''" + hobby + ''\'''' +
''}'';
}
}
定义的name/age/sex 必须要和JSON数据里面的一模一样
package liudeli.mynetwork01.entity;
/**
* 定义一个Bean
* 定义的name/age/sex 必须要和JSON数据里面的一模一样
*
* [
* {
* "name":"君君",
* "age":89,
* "sex":"男"
* },
* {
* "name":"小君",
* "age":99,
* "sex":"女"
* },
* {
* "name":"大君",
* "age":88,
* "sex":"男"
* }
* ]
*/
public class Student {
private String name;
private int age;
private String sex;
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name=''" + name + ''\'''' +
", age=" + age +
", sex=''" + sex + ''\'''' +
''}'';
}
}
GsonAnalyzeJSONActivity.java
package liudeli.mynetwork01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.List;
import liudeli.mynetwork01.entity.Student;
import liudeli.mynetwork01.entity.Student2;
public class GsonAnalyzeJSONActivity extends Activity {
private final String TAG = GsonAnalyzeJSONActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gson_analyze);
}
/**
* Gson解析JSON对象
* {
* "name":"李四",
* "age":99,
* "hobby":"爱好是练习截拳道"
* }
*/
public void gonsAnalyzeJSONObject(View view) {
String jsonData = readFile("pottingJSON1");
// Log.d(TAG, "jsonData:" + jsonData);
Gson gson = new Gson();
Student2 student2 = gson.fromJson(jsonData, Student2.class);
Log.d(TAG, "gonsAnalyzeJSONObject 解析后的结果:" + student2.toString());
}
/**
* Gson解析JSON数组
* [
* {
* "name":"君君",
* "age":89,
* "sex":"男"
* },
* {
* "name":"小君",
* "age":99,
* "sex":"女"
* },
* {
* "name":"大君",
* "age":88,
* "sex":"男"
* }
* ]
* @param view
*/
public void gonsAnalyzeJSONArray(View view) {
String jsonData = readFile("pottingJSONArray1");
// Log.d(TAG, "jsonData:" + jsonData);
Gson gson = new Gson();
/**
* TypeToken<List<需要映射的Bean对象>>(){}.getType()
*/
List<Student> list = gson.fromJson(jsonData, new TypeToken<List<Student>>(){}.getType()); // 参数二:需要指定类型,类型来决定解析的集合
for (Student student: list) {
Log.d(TAG, "gonsAnalyzeJSONArray 解析后的结果:" + student.toString());
}
}
/**
* 读取文件里面的字符串
* @param fileName
* @return
*/
private String readFile(String fileName) {
String result = null;
try {
InputStream inputStream = openFileInput(fileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
baos.write(bytes, 0,bytes.length);
result = new String(baos.toByteArray());
baos.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
activity_gson_analyze.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gson解析JSON对象"
android:onClick="gonsAnalyzeJSONObject"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gson解析JSON数组"
android:onClick="gonsAnalyzeJSONArray"
/>
</LinearLayout>
日志的打印:
使用Gson解析,JSON对象数据:
12-23 23:00:52.108 9729-9729/liudeli.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONObject 解析后的结果:Student{name=''李四'', age=99, hobby=''爱好是练习截拳道''}
使用Gson解析,JSON数组数据:
12-23 23:00:53.199 9729-9729/liudeli.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONArray 解析后的结果:Student{name=''君君'', age=89, sex=''男''}
12-23 23:00:53.199 9729-9729/liudeli.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONArray 解析后的结果:Student{name=''小君'', age=99, sex=''女''}
12-23 23:00:53.199 9729-9729/liudeli.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONArray 解析后的结果:Student{name=''大君'', age=88, sex=''男''}
echo json_encode回到json对象,在前端获取到的却是字符串,而非json对象
echo json_encode返回json对象,在前端获取到的却是字符串,而非json对象
前端使用一下代码提交并处理后续结果
<br /> function del(id){<br /> if(confirm(''确认要删除此关键字吗?'')){<br /> $.post(''./keyword'',{ op:''del'',id:id },function(result){<br /> alert(result); //正常这个部分应该显示的是object:object,但现在显示的是一个字符串<br /> if( result.code != 0 ){<br /> alert("删除失败!");<br /> }else{<br /> location.reload();<br /> }<br /> });<br /> }<br /> }<br /> <br />
服务端使用以下代码返回
<br /> echo json_encode(array("code"=>0));<br /> exit;<br />
正常情况下在前端alert result这个变量,应该显示的是object:object,可现在显示的却是这个json字符串。
------解决方案--------------------
$.post(''./keyword'',{ op:''del'',id:id },function(result){...}, ''json'');
------解决方案--------------------
<br /> <br /> function del(id){<br /> if(confirm(''确认要删除此关键字吗?'')){<br /> $.post(''./keyword'',{ op:''del'',id:id },function(result){<br /> alert(result); //正常这个部分应该显示的是object:object,但现在显示的是一个字符串<br /> if( result.code != 0 ){<br /> alert("删除失败!");<br /> }else{<br /> location.reload();<br /> }<br /> },"json");<br /> }<br /> }<br /> <br /> <br />

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。



-
简化 React 状态管理:处理状态的最佳实践2024-09-11 13:40:05
-
word在中间插字就会消失一个字怎么办2024-07-17 21:28:11
-
微信怎么注销微信支付 微信注销微信支付的方法2024-07-16 10:20:46
-
惠普强势登陆2024德鲁巴印刷展 与Canva可画达成全球合作2024-05-29 08:13:13
-
《鸣潮》卡卡罗角色攻略2024-05-25 09:37:24
-
华硕bios升级中途关机没法开机了?2024-05-24 20:31:46
-
ps怎么调亮背光图片 ps调亮背光图片教程2024-05-11 10:28:35
-
win10启动项开启方法2023-12-29 17:08:12
-
全新雷克沙ARES电竞超频内存来了,打造极致体验2023-12-15 19:23:35
-
PHP中如何处理缓存错误?2023-12-02 11:08:01






























-
支付宝转账限额介绍
-
word怎么在方框中打√符号
-
1tb是多少g内存
-
快手小店如何关闭
-
微信转账一天最多能转多少钱
-
手机数据线连接电脑为什么没反应
-
电脑开机为什么显示英文不动
-
苹果手机app如何恢复旧版本
echo json_encode返回json对象,在前端获取到的却是字符串,而非json对象
前端使用一下代码提交并处理后续结果
服务端使用以下代码返回
正常情况下在前端alert result这个变量,应该显示的是object:object,可现在显示的却是这个json字符串。
回复讨论(解决方案)
$.post(''./keyword'',{ op:''del'',id:id },function(result){...}, ''json'');
fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串与JSON对象互相转换,自己在这一方面的概念总是很混乱,最近看源码和博客,在此记录一下。注意:全程用的是fastjson
首先JSON有两种格式,一种是对象格式,一种是对象数组。
在JSON使用中主要的3个类:JSON,JSONObjec,JSONArray
其中JSONObjec
和JSONArray
继承于JSON
的。
JSON对象(JSONObject)
{"id":1,"name":"chen"}
JSON对象数组(JSONArray)
[ {"id":1,"name":"chen"}, {"id":2,"name":"张三"}]
下面直接进入正题:
Java Bean 和JSON字符串的互转
Java Bean 转 JSON字符串
Java Bean是指Java中的一个普通对象(实体类)例如:
public class Student{ private String name; // 姓名 private Integer age; // 年龄 public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(Integer age){ this.age = age; } public Integer getAge(){ return age; } @Override public String toString() { return "Student{" + "name=''" + name + ''\'''' + ", age=" + age + ''}''; }}
使用JSON
类的toJSONString()
方法,实现JSON
对象转化为JSON
字符串和Java Bean
对象转化为JSON
字符串。仔细观察源码发现,该方法经过多次重载,但最终都是实现JSON
对象转化为JSON
字符串和Java Bean
对象转化为JSON
字符串。
@Testpublic void BeanToJSONTest(){ Student student = new Student(); student.setName("小明"); student.setAge(20); String s1 = JSON.toJSONString(student); St..............
我们今天的关于json_encode将PHP数组稀疏为JSON数组,而不是JSON对象和php json数组的分享就到这里,谢谢您的阅读,如果想了解更多关于Android-Gson解析JSON数据(JSON对象/JSON数组)、echo json_encode回到json对象,在前端获取到的却是字符串,而非json对象、echo json_encode返回json对象,在前端获取到的却是字符串,而非json对象、fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化的相关信息,可以在本站进行搜索。
本文标签: