86154


zeepを利用してsoapサーバーから取得したデータをjson形式に変換する方法を探しております。  
色々調べたのですが、自分では解決出来ず質問させて頂きました。  
初歩的な質問かと思いますが、どうぞよろしくお願い致します

soapサーバーからの出力結果

[code]

    {
        'header': {
            'sessionID': '1234'
        },
        'body': {
            'return': {
                'result_code': 0,
                'result_data': 'Extension=1234|Type=5678,
                'message_text': None
            }
        }
    }
    
[/code]

試したコード

[code]

    from requests.auth import HTTPBasicAuth  
    from requests import Session
    from zeep import Client
    from zeep.transports import Transport
    import json
    
    
    session = Session()
    session.auth = HTTPBasicAuth("abcd", "78910")
    client = Client('http://1.1.1.1/sms/Service.php?wsdl', transport=Transport(session=session))
    
    
    
    
    result = str(client.service.submitrequest("station","display").replace('\'', '\"')
    result_js = json.loads(result)
    
[/code]

エラーメッセージ

[code]

        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line x(数字) column x(数字) (char 2779)
    
[/code]


CC BY-SA 4.0
2022-02-05T02:06:44.967
86151
2022-02-05T03:55:32.927
2022-02-05T03:40:13.740
9820
51133
question
python
soapで出力された結果をjson形式に変換したいのですが、エラーメッセージが出力され変換できない


エラーメッセージの一部が伏せ字になっているので推測になりますが、`None` という文字列のデコードでエラーが発生している様です。なので、`None`
という文字列を空文字列(empty string)を表す `""` に置き換えます。  
※ 単純置換では、ある問題が想定されますが現時点では以下の通りです。

[code]

    import json
    
    json_text = """
    {
      'header': {
        'sessionID': '1234'
      },
      'body': {
        'return': {
          'result_code': 0,
          'result_data': 'Extension=1234|Type=5678',
          'message_text': None
        }
      }
    }
    """.replace("'", '"')
    
    json_text = json_text.replace('None', r'""')
    json_dict = json.loads(json_text)
    
    from pprint import pprint
    pprint(json_dict, sort_dicts=False)
    
    #
    {'header': {'sessionID': '1234'},
     'body': {'return': {'result_code': 0,
                         'result_data': 'Extension=1234|Type=5678',
                         'message_text': ''}}}
    
[/code]


CC BY-SA 4.0
2022-02-05T03:55:32.927
86154
2022-02-05T03:55:32.927
47127
86151
answer