GVKun编程网logo

python json按输入顺序输出内容(python json 顺序)

22

本文将带您了解关于pythonjson按输入顺序输出内容的新内容,同时我们还将为您解释pythonjson顺序的相关知识,另外,我们还将为您提供关于JsonObject存入顺序和输出顺序不一样问题-豆

本文将带您了解关于python json按输入顺序输出内容的新内容,同时我们还将为您解释python json 顺序的相关知识,另外,我们还将为您提供关于JsonObject存入顺序和输出顺序不一样问题-豆果、JS对JSON对象遍历输出的时候真的是按照顺序输出吗?、Python 2.x 中如何使用json模块将JSON字符串转换为Python对象、Python 2.x 中如何使用json模块将Python对象转换为JSON字符串的实用信息。

本文目录一览:

python json按输入顺序输出内容(python json 顺序)

python json按输入顺序输出内容(python json 顺序)

通过使用collecions,进行排序。collections是一个python的内建模块。
import collections
dic = collections.OrderedDict()
# dic = dict()
dic['a'] = 1
dic['b'] = 2
dic['c'] = 3
print("dic is:",dic.items())

import json
jsons = json.dumps(dic)
print("jsons:",jsons)

结果:

dic is: odict_items([('a',1),('b',2),('c',3)])
jsons: {"a": 1,"b": 2,"c": 3}

 

JsonObject存入顺序和输出顺序不一样问题-豆果

JsonObject存入顺序和输出顺序不一样问题-豆果

##JsonObject的输入顺序和输出顺序不一样问题 ###问题原因在于JsonObject的默认实现的是用HashMap,所以我们得把他的构造函数用LinkedHashMap重写

  • 好像是可以修改JsonObject的源码的构造函数,但我没试过,也不建议这么做。
  • 我的方法是继承JsonObject类,然后重写构造方法。
  public class MyJSONObject extends JSONObject {
    private LinkedHashMap<Object, Object> mHashMap;

    public MyJSONObject() {
        mHashMap = new LinkedHashMap<Object, Object>();
    }

    @Override
    public JSONObject put(String name, boolean value) throws JSONException {
        // TODO Auto-generated method stub
        return put(name, value);
    }

    @Override
    public JSONObject put(String name, double value) throws JSONException {
        // TODO Auto-generated method stub
        return put(name, value);
    }

    @Override
    public JSONObject put(String name, int value) throws JSONException {
        // TODO Auto-generated method stub
        return put(name, value);
    }

    @Override
    public JSONObject put(String name, long value) throws JSONException {
        // TODO Auto-generated method stub
        return put(name, value);
    }

    public JSONObject put(String key, Object value) throws JSONException {
        if (key == null) {
            throw new JSONException("Null key.");
        }
        if (value != null) {
            testValidity(value);
            mHashMap.put(key, value);
        } else {
            remove(key);
        }
        return this;
    }

    public String  getKey(String key) throws JSONException{
        return mHashMap.get(key).toString();
    }

    public Object remove(String key) {
        return mHashMap.remove(key);
    }

    static void testValidity(Object o) throws JSONException {
        if (o != null) {
            if (o instanceof Double) {
                if (((Double) o).isInfinite() || ((Double) o).isNaN()) {
                    throw new JSONException("JSON does not allow non-finite numbers.");
                }
            } else if (o instanceof Float) {
                if (((Float) o).isInfinite() || ((Float) o).isNaN()) {
                    throw new JSONException("JSON does not allow non-finite numbers.");
                }
            }
        }
    }

    public String toString() {
        try {
            Iterator<Object> keys = mHashMap.keySet().iterator();
            StringBuffer sb = new StringBuffer("{");

            while (keys.hasNext()) {
                if (sb.length() > 1) {
                    sb.append('','');
                }
                Object o = keys.next();
                sb.append(quote(o.toString()));
                sb.append('':'');
                sb.append(valueToString(mHashMap.get(o)));
            }
            sb.append(''}'');
            return sb.toString();
        } catch (Exception e) {
            return null;
        }
    }

    static String valueToString(Object value) throws JSONException {
        if (value == null || value.equals(null)) {
            return "null";
        }
        if (value instanceof JSONStringer) {
            Object o;
            try {
                o = ((JSONStringer) value).toString();
            } catch (Exception e) {
                throw new JSONException(e.getMessage());
            }
            if (o instanceof String) {
                return (String) o;
            }
            throw new JSONException("Bad value from toJSONString: " + o);
        }
        if (value instanceof Number) {
            return numberToString((Number) value);
        }
        if (value instanceof Boolean || value instanceof JSONObject || value instanceof JSONArray) {
            return value.toString();
        }
        if (value instanceof Map) {
            return new JSONObject((Map) value).toString();
        }
        if (value instanceof Collection) {
            return new JSONArray((Collection) value).toString();
        }
        return quote(value.toString());
    }

}


JS对JSON对象遍历输出的时候真的是按照顺序输出吗?

JS对JSON对象遍历输出的时候真的是按照顺序输出吗?

  对象的遍历输出并不是按照对象属性定义顺序来的,那么是按照什么规则来的呢,仔细深入研究你会发现,这还跟浏览器有关系,Chrome跟IE是不一样的,所以给出以下结论:

  Chrome Opera 的 JavaScript 解析引擎遵循的是新版 ECMA-262 第五版规范。因此,使用 for-in 语句遍历对象属性时遍历书序并非属性构建顺序。而 IE6 IE7 IE8 Firefox Safari 的 JavaScript 解析引擎遵循的是较老的 ECMA-262 第三版规范,属性遍历顺序由属性构建的顺序决定。

  Chrome Opera 中使用 for-in 语句遍历对象属性时会遵循一个规律:
它们会先提取所有 key 的 parseFloat 值为非负整数的属性,然后根据数字顺序对属性排序首先遍历出来,然后按照对象定义的顺序遍历余下的所有属性。

那么,解决办法呢?

可以把对象通过Object.keys提取对象的key出来变成数组,然后通过数组的排序,然后遍历数组,通过key去取对象的属性值。

  有一些业务要求对对象的各属性值按照一定顺序排列,而给定的对象属性又不确定能按顺序排列(如,数字大小顺序)

 

//************************* JSON对象属性排序*********************************//
//要求传入参数 JsonData 为JSON对象
//输出结果为JSON对象
//输出的对象为按key值升序排列的
function JsonObjSort(JsonData) { if(JsonData) { var JsonKeyArray=new Array(); for(x in JsonData) { var xToInt=parseInt(x); JsonKeyArray.push(xToInt); } JsonKeyArray=JsonKeyArray.sort();//对数组升序排列 var NewJsonStr="" ; for(var i=0;i<JsonKeyArray.length;i++) { if(i>0) { NewJsonStr += '',''; } var value = JsonData[JsonKeyArray[i]]; NewJsonStr += ''"''+JsonKeyArray[i]+ ''"'' +'':''+value; } var NewJsonStrObj=eval(''(''+''{''+NewJsonStr+''}''+'')''); //console.log(NewJsonStrObj); return NewJsonStrObj ; } else return ""; }

 

 

 

 

 

 

Python 2.x 中如何使用json模块将JSON字符串转换为Python对象

Python 2.x 中如何使用json模块将JSON字符串转换为Python对象

python 2.x 中如何使用json模块将json字符串转换为python对象

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于将数据从一个应用程序传输到另一个应用程序。在Python中,可以使用json模块来处理JSON数据。本文将演示如何使用json模块将JSON字符串转换为Python对象。

首先,我们需要导入json模块:

import json
登录后复制

接下来,假设我们有以下的JSON字符串:

json_str = ''{"name": "Alice", "age": 25, "city": "New York"}''
登录后复制

现在,我们要将这个JSON字符串转换为Python对象。可以使用json模块的loads()函数来实现:

立即学习“Python免费学习笔记(深入)”;

python_obj = json.loads(json_str)
登录后复制

这样,json_str中的数据就被转换为了一个Python字典对象。我们可以通过访问字典的键来获取相应的值:

print(python_obj["name"])  # 输出:Alice
print(python_obj["age"])  # 输出:25
print(python_obj["city"])  # 输出:New York
登录后复制

除了将JSON字符串转换为字典对象,json模块还可以将JSON字符串转换为其他Python对象,比如列表、字符串等。

如果JSON字符串表示的是一个列表,可以使用json模块的loads()函数将其转换为Python列表对象。例如:

json_str = ''[1, 2, 3, 4, 5]''
python_obj = json.loads(json_str)
print(python_obj)  # 输出:[1, 2, 3, 4, 5]
登录后复制

如果JSON字符串表示的是一个字符串,可以使用json模块的loads()函数将其转换为Python字符串对象。例如:

json_str = ''"Hello, World!"''
python_obj = json.loads(json_str)
print(python_obj)  # 输出:Hello, World!
登录后复制

需要注意的是,JSON字符串中的键和字符串都必须使用双引号括起来。如果使用单引号括起来,将会导致JSONDecodeError异常。

另外,如果JSON字符串中包含浮点数、布尔值等类型,json模块会自动将它们转换为相应的Python对象。例如:

json_str = ''{"price": 9.99, "is_available": true}''
python_obj = json.loads(json_str)
print(python_obj["price"])  # 输出:9.99
print(python_obj["is_available"])  # 输出:True
登录后复制

当然,我们也可以将JSON字符串转换为自定义的Python类对象。只需定义一个与JSON字符串对应的类,并在类中实现from_json()方法来构建对象。以下是一个示例:

class Person(object):
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city
    
    @classmethod
    def from_json(cls, json_str):
        python_obj = json.loads(json_str)
        return cls(python_obj["name"], python_obj["age"], python_obj["city"])
    
    def __repr__(self):
        return "Person(name={}, age={}, city={})".format(self.name, self.age, self.city)

json_str = ''{"name": "Bob", "age": 30, "city": "London"}''
person = Person.from_json(json_str)
print(person)  # 输出:Person(name=Bob, age=30, city=London)
登录后复制

通过实现from_json()方法,我们可以自定义将JSON字符串转换为Python对象的逻辑。

以上就是在Python 2.x 中使用json模块将JSON字符串转换为Python对象的方法。通过这种方式,我们可以方便地提取和处理JSON数据,使其适应更广泛的应用场景。

以上就是Python 2.x 中如何使用json模块将JSON字符串转换为Python对象的详细内容,更多请关注php中文网其它相关文章!

Python 2.x 中如何使用json模块将Python对象转换为JSON字符串

Python 2.x 中如何使用json模块将Python对象转换为JSON字符串

python 2.x 中如何使用json模块将python对象转换为json字符串

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据的传输和存储。在Python 2.x中,我们可以使用json模块将Python对象转换为JSON字符串。

json模块提供了几个函数来进行JSON编码和解码操作。在将Python对象转换为JSON字符串时,我们需要使用json.dumps()函数。下面是一个示例,展示了如何将一个Python字典对象转换为JSON字符串:

import json

# 创建一个Python字典对象
person = {
  "name": "John",
  "age": 30,
  "city": "New York"
}

# 使用json.dumps()将字典对象转换为JSON字符串
json_str = json.dumps(person)

# 输出JSON字符串
print(json_str)
登录后复制

输出结果为:

{"name": "John", "age": 30, "city": "New York"}
登录后复制

在上述示例中,我们首先导入json模块。然后,我们创建一个字典对象person,并将其赋值为包含姓名、年龄和城市信息的键值对。

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

接下来,我们使用json.dumps()函数将person字典对象转换为JSON字符串。这个函数接受一个Python对象作为参数,并返回一个JSON格式的字符串。

最后,我们使用print()函数打印出JSON字符串。

除了字典对象,json模块还可以处理其他常见的Python数据类型,例如列表、元组和字符串等。下面是一个示例,展示了如何将Python列表对象转换为JSON字符串:

import json

# 创建一个Python列表对象
fruits = ["apple", "banana", "cherry"]

# 使用json.dumps()将列表对象转换为JSON字符串
json_str = json.dumps(fruits)

# 输出JSON字符串
print(json_str)
登录后复制

输出结果为:

["apple", "banana", "cherry"]
登录后复制

在这个示例中,我们创建了一个列表对象fruits,其中包含了几个水果的名称。然后,我们使用json.dumps()函数将列表对象转换为JSON字符串,并使用print()函数打印出JSON字符串。

需要注意的是,当转换包含了奇特字符(如引号或斜杠)的Python对象时,json模块会自动进行转义处理。这确保生成的JSON字符串是符合JSON规范的。

除了json.dumps()函数,json模块还提供了其他一些函数来处理JSON数据,例如json.loads()函数用于JSON解码,将JSON字符串转换为Python对象。另外,json.dump()和json.load()函数用于文件的JSON编码和解码操作。

总结一下,Python 2.x中的json模块提供了简单而强大的工具来进行JSON编码和解码。通过使用json.dumps()函数,我们可以将Python对象转换为JSON字符串,实现数据的传输和存储。同时,我们也可以使用其他json模块提供的函数来处理JSON数据。

以上就是Python 2.x 中如何使用json模块将Python对象转换为JSON字符串的详细内容,更多请关注php中文网其它相关文章!

关于python json按输入顺序输出内容python json 顺序的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于JsonObject存入顺序和输出顺序不一样问题-豆果、JS对JSON对象遍历输出的时候真的是按照顺序输出吗?、Python 2.x 中如何使用json模块将JSON字符串转换为Python对象、Python 2.x 中如何使用json模块将Python对象转换为JSON字符串的相关信息,请在本站寻找。

本文标签: