首页 > 编程语言 >python给替换json字符串中的值&通过路径获取json字符串的值

python给替换json字符串中的值&通过路径获取json字符串的值

时间:2022-11-02 11:11:08浏览次数:39  
标签:__ python self value dic json 字符串 path

一、内容

替换json字符串中的值 

通过路径获取json字符串的值

二、代码

替换json字符串中的值 

def repalceJson(t_json, value, path):
    """
        通过json路径,替换路径的值
        :param t_json: 原字符串
        :param value: 需要替换的值
        :param <list> path: 替换值的路径
    """
    if len(path) > 1:
        try:
            repalceJson(t_json[int(path[0])], value, path[1:])
        except:
            repalceJson(t_json[path[0]], value, path[1:])

    else:
        t_json[path[0]] = value


def dealPath(path):
    """
        讲path替换为list
        :param path: 原字符串
    """
    paths = path.split(".")
    return paths

if __name__ == '__main__':
    d1 = {'result': 0, 'custmid': 471479, 'create_time': 1667186233215, 'version': 1, 'conflict_custms': [],
          'custm': {'custmid': 471479, 'version': 1, 'name': '一个客户.', 'addr': '山东省建市永川重庆路w座 565890', 'contacts': [],
                    'name_swords': [], 'followers': [{'pid': 2302, 'start_time': 1667186233215}], 'follow_level': '待跟进',
                    'create_pid': 2302, 'create_time': 1667186233215, 'modify_pid': 2302, 'modify_time': 1667186233215,
                    'status': 1, 'attrs': [], 'websites': [], 'properties': [], 'pre_followers': []}, 'similars': [],
          'sames': []}
 
    s_path = 'custm.followers.0.pid'


    s_path = dealPath(s_path)
    repalceJson(d1, 111, s_path)
    print(d1)
View Code

 

通过路径获取json字符串的值

 1 class PathValue:
 2     def __init__(self, json_res, value_path):
 3         """
 4         通过json路径找到需要的值,并存入dic
 5         :param json_res: json响应
 6         :param value_path: 取值路径
 7         """
 8         self.json_res = json_res
 9         self.value_path = value_path
10         self.dic = ''
11 
12     def path_value_dic(self):
13         """
14         如果存在多个值,使用,分隔value_path
15         :return:
16         """
17         l_path = self.value_path.split(",")
18         for path in l_path:
19             self.json_path_value(self.json_res, path)
20 
21     def json_path_value(self, d, s):
22         """
23         根据传入的json路径从响应中取值,存入dic,主要运用了递归函数
24         :param d: 响应Json
25         :param s: Json路径
26         :return: 存入值的字典dic
27         """
28         pahts = s.split(".")
29         if len(pahts) == 1:
30             self.dic = d[pahts[0]]
31             return
32         for p in pahts:
33             if p.isnumeric():
34                 a = d[int(p)]
35                 return self.json_path_value(a, '.'.join(pahts[1:]))
36             a = d[p]
37             return self.json_path_value(a, '.'.join(pahts[1:]))
38 if __name__ == '__main__':
39     d1 = {'result': 0, 'custmid': 471479, 'create_time': 1667186233215, 'version': 1, 'conflict_custms': [],
40           'custm': {'custmid': 471479, 'version': 1, 'name': '一个客户.', 'addr': '山东省建市永川重庆路w座 565890', 'contacts': [],
41                     'name_swords': [], 'followers': [{'pid': 2302, 'start_time': 1667186233215}], 'follow_level': '待跟进',
42                     'create_pid': 2302, 'create_time': 1667186233215, 'modify_pid': 2302, 'modify_time': 1667186233215,
43                     'status': 1, 'attrs': [], 'websites': [], 'properties': [], 'pre_followers': []}, 'similars': [],
44           'sames': []}
45     s_path = 'custm.followers.0.pid'
46     p = PathValue(d1, s_path)
47     p.path_value_dic()
48     print(p.dic)
49     print(type(p.dic))
View Code

 

标签:__,python,self,value,dic,json,字符串,path
From: https://www.cnblogs.com/sugoi/p/16850364.html

相关文章

  • shell语法1-概论、注释、变量、字符串
    如果感觉有点忘了或者有点懵,敲出来测试测试就好了一:概论Linux系统中一般默认使用bash,文件开头需要写#!/bin/bash,指明bash为脚本解释器chmod+xfilename:使脚本具有可执......
  • python 读取excel
    练习#coding:utf-8"""#@Time:2022/10/2517:47#@Author:GinaGao#@File:#@Software:PyCharm#@Descript:pipinstall-ihttps://pypi.tuna.tsinghua......
  • 字符串的运算
     ##算数运算符###+求和#a=2#d=3#c=a+d#print(c)##-#print(d-a)###*乘法#print(a*d)###/除法#print(d/a)###%取余#print(d%a)###*......
  • python pywin32库 : Python 操作 windows 系统 API 【转】
         导入数据importrequestsimportre 请求数据forpageinrange(1,126):url='https://wallhaven.cc/toplist?page={}'.format(pa......
  • python编程基础
    1、python数制转换```方法一:a,b=eval(input())print(int(str(a),b))方法二:a,b=input().split(',')print(int(str(a),int(b)))......
  • JSONP的原理和封装
    jsonp是一种跨域通信的手段,它的原理其实很简单:首先是利用script标签的src属性来实现跨域。通过将前端方法作为参数传递到服务器端,然后由服务器端注入参数之后再返回,实现......
  • 【GUI开发】用python爬YouTube博主信息,并开发成exe软件!
    目录一、背景介绍二、代码讲解2.1爬虫2.2tkinter界面2.3存日志三、说明一、背景介绍你好,我是@马哥python说,一名10年程序猿。最近我用python开发了一个GUI桌面软件,目......
  • JavaScript笔记 - 字符串常用方法
    字符串目录字符串1.字符串搜索indexOf()search()match()includes()startsWith()2.字符串提取slice()substring()substr()charAt()charCodeAt()split()3.字符串替换repl......
  • python之matplotlib
    matplotlib可以将数据绘制成图像呈现,风格与matlab画图相似,是一款很好用的python库。这篇文档记录matplotlib的学习过程。主要参考见参考1。1概述Matplotlib代码库十分......
  • [JAVA]Springboot添加fastjson用于前台数据校验
    方式一,添加HttpMessageConverters实例importcom.alibaba.fastjson.support.config.FastJsonConfig;importcom.alibaba.fastjson.support.spring.FastJsonHttpMessage......