Python如何追加JSON文件里的内容?

Python如何追加JSON文件里的内容?,第1张

import json

readed = json.load(open('jsonsource.dat', 'r'))

json.dump(readed, open('newjsonfile.dat', 'w'))

一 简介:

JSON(JavaScript对象符号)是一种轻量级的数据交换格式。这是很容易为人类所读取和写入。这是易于机器解析和生成。它是基于JavaScript编程语言的一个子集 , 标准ECMA-262第三版- 1999年12月。JSON是一个完全独立于语言的文本格式,但使用C家族的语言,包括C,C + +,C#,Java中的JavaScript,Perl的,Python中,和许多其他程序员所熟悉的约定。这些特性使JSON成为理想的数据交换语言。他和map很类似,都是以

键/值 对存放的。

二 JSON 使用须要用的JAR包:

commons-lang.jar

commons-beanutils.jar

commons-collections.jar

commons-logging.jar

ezmorph.jar

json-lib-2.2.2-jdk15.jar

三 使用JSON中的JSONObject:

1.创建一个JSONObject对象,并使用put()方法添加元素:

首先我们创建一个User对象以备后用:

public class User {

private int id

private String name

private String pwd

private String sex

//get,set方法

@Override

//重写他的toString方法

public String toString() {

return this.name+"--"+this.pwd+"--"+this.sex

}

}

例子如下:

import net.sf.json.JSONObject

public class TestJson {

private static JSONObject json = null

public static void main(String[] args) {

json = new JSONObject()

json.put("id","1")

json.put("name","张三")

json.put("pwd","123456")

System.out.println(json)

}

}

运行:

C:\java>java TestJson

{"id":"1","name":"张三","pwd":"123456"}

通过这段代码我们就能很清淅的看到他的添加元素和map集合方式一样。

现在我们要将这个json对象放进一个JAVABEAN的User对象怎么弄呢?很简单

我们须要在 TestJson 类中的主方法中加入(放在System.out.println(json)这句话后面)

User user = new User()

user.setId(Integer.parseInt(json.getString("id")))

//json.getString("id")就是通过他的KEY值取得对应的value值

user.setName(json.getString("name"))

user.setPwd(json.getString("pwd"))

System.out.println(user)

这样我们就把json这个对象里的值放进user对象里面了。

运行:

C:\java>java TestJson

{"id":"1","name":"张三","pwd":"123456"}

张三--123456--null

json添加元素除了用put()方法之外还可以用element()如:json.element("11", "222")

2.创建一个JSONArray对象,并添加元素:

JSONArray添加元素和list集合一样,当然取值也很像,代码如下

import net.sf.json.*

public class TestJson1 {

private static JSONObject json = null

private static JSONArray jsonArray = null

public static void main(String[] args) {

jsonArray = new JSONArray ()

jsonArray.add(0, "张三")

jsonArray.add(1, "李四")

jsonArray.add(2, "王五")

jsonArray.add(3, "小三")

System.out.println(jsonArray)

System.out.println(jsonArray.get(1))

}

}

输出结果为:

["张三","李四","王五","小三"]

李四

注:json的基本格式这些网上很多,就不多说了,我们只须记住一句话就行了:[]表示数组,{}表示对象就完了!

1.从Object到String

要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可

(1)示例一

Book book=new Book()

book.setName("Java")

book.setPrice(52.3f)

JSONObject object=JSONObject.fromObject(book)

System.out.println(object.toString())

(2)示例二

Book book=new Book()

book.setName("Java")

book.setPrice(52.3f)

Book book2=new Book()

book2.setName("C")

book2.setPrice(42.3f)

List list=new ArrayList()

list.add(book)

list.add(book2)

JSONArray arry=JSONArray.fromObject(list)

System.out.println(arry.toString())

//结果如下:

[{"name":"Java","price":52.3},{"name":"C","price":42.3}]

2.从String到Object

要先用String对象构造一个JSONObject或者JSONArray对象

(1)示例一

String json="{name:'Java',price:52.3}"

JSONObject object=JSONObject.fromObject(json)

System.out.println(object.get("name")+" "+object.get("price"))

(2)示例二

String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]"

JSONArray array=JSONArray.fromObject(json)

for(int i=0i<array.size()i++){

Map o=(Map)array.get(i)

System.out.println(o.get("name")+" "+o.get("price"))

}

3.从String到Bean

(1)单个Bean对象

String json="{name:'Java',price:52.3}"

JSONObject object=JSONObject.fromObject(json)

Product product=(Product)JSONObject.toBean(object,Product.class)

System.out.println(product.getName()+" "+product.getPrice())

(2).Bean的数组

String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]"

JSONArray array=JSONArray.fromObject(json)

Product[] products=(Product[]) JSONArray.toArray(array,Product.class)

for(Product p:products){

System.out.println(p.getName()+" "+p.getPrice())

}

自定义封装JSON *** 作的类

package com.util

import java.util.List

import java.util.Map

import net.sf.json.JSONArray

import net.sf.json.JSONObject

public class JsonHelper {

//从普通的Bean转换为字符串

public static String getJson(Object o){

JSONObject jo=JSONObject.fromObject(o)

return jo.toString()

}

//从Java的列表转换为字符串

public static String getJson(List list){

JSONArray ja=JSONArray.fromObject(list)

return ja.toString()

}

//从Java对象数组转换为字符串

public static String getJson(Object[] arry){

JSONArray ja=JSONArray.fromObject(arry)

return ja.toString()

}

//从json格式的字符串转换为Map对象

public static Map getObject(String s){

return JSONObject.fromObject(s)

}

//从json格式的字符串转换为List数组

public static List getArray(String s){

return JSONArray.fromObject(s)

}

//从json格式的字符串转换为某个Bean

public static Object getObject(String s,Class cls){

JSONObject jo=JSONObject.fromObject(s)

return JSONObject.toBean(jo, cls)

}

//从json格式的字符串转换为某类对象的数组

public static Object getArray(String s,Class cls){

JSONArray ja=JSONArray.fromObject(s)

return JSONArray.toArray(ja, cls)

}

}

json.dumps()

该函数可以将简单数据类型(int\float\string\tuple\list\dict\unicode)转换成JSON格式,样例代码如下:

import json

src_data = {"name":"Tacey","age":13,"sex":"male","interst":("Programing","Reading")}

#print repr(src_data)

print json.dumps(src_data)

输出如下:

{'interst':('Programing','Reading'),'age':23,'name':'Tacey','sex':'male'}

{"interst":["programing","Reading"],"age":23,"name":"Tacey","sex":mal"}

2、json.loads()

该函数可以将JSON数据转换成Python的简单数据类型,接着上面的代码:

json_data = json.dumps(src_data)

print json.loads(json_data)["name"]

输出结果:

Tacey


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11824463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存