使用python读取文件json

时间:2019-02-05 13:45:09

标签: python json python-3.x

我有此文件JSON:

我想用python读取此文件,但是此代码报告一个错误。

{ tipoGrafico: 'Multi Serie Chart',
  min_value: '1',
  max_value: '1',
  min_strategy: '2',
  max_strategy: '3',
  mutation: '4',
  cxpb: '5',
  mutpb: '6',
  value_tournSize: '7',
  pop_size: '100' 
}

我的代码python:

import json
import sys
print("nome del json: ",sys.argv[1])
data = json.load(open(sys.argv[1]))
data["tipoGrafico"]

但是我有这个错误:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)

4 个答案:

答案 0 :(得分:1)

您的文件不是有效的JSON文件-请参见Single vs double quotes in JSONJSON standard。实际上,它甚至不是有效的python字典,因为键没有包含在任何引号中。

要读取文件,您需要进行如下更改:

{ "tipoGrafico": "Multi Serie Chart",
  "min_value": "1",
  "max_value": "1",
  "min_strategy": "2",
... }

此外,为确保正确处理和关闭文件,我建议在打开文件时使用with语句:

with open(sys.argv[1]) as json_file:
    data = json.load(json_file)
data["tipoGrafico"]

答案 1 :(得分:1)

此“ JSON”实际上是有效的YAML,因此您可以简单地使用yaml模块加载它(在安装pyyaml软件包之后):

import yaml
import sys
print("nome del yaml: ",sys.argv[1])
data = yaml.load(open(sys.argv[1]))
data["tipoGrafico"]

答案 2 :(得分:0)

我使用此js从我的应用程序中获取此“ json”:

$(document).ready(function() {
    $("#submit").on('click', function(){
        // send ajax
        $.ajax({

            url: 'http://127.0.0.1:8081/', // url where to submit the request
            type : "POST", // type of action POST || GET
            dataType : 'json', // data type
            data : $("#form").serialize(), // post data || get data
            success : function(result) {
                // you can see the result from the console
                // tab of the developer tools
                console.log(result);
            },
            error: function(xhr, resp, text) {
                console.log(xhr, resp, text);
                }
            })
        });
});

在此服务器节点上:

var express = require("express");
var bodyParser = require("body-parser");

var app = express();
var jsonParser = bodyParser.json();
var urlencodedParser = bodyParser.urlencoded({ extended: false });


var obj = {
    table: []
};

app.post("/", urlencodedParser, function(request, response) {   
    console.log(request.body); //This prints the JSON document received (if it is a JSON document)
    obj.table.push(request.body);
});

var json = JSON.stringify(obj);

var fs = require('fs');
fs.writeFile('myjsonfile.json', json, 'utf8');

//Start the server and make it listen for connections on port 8080
app.listen(8081);

如何获取正确的json文件?

答案 3 :(得分:0)


这不是有效的JSON。
试试这个:

{
    "tipoGrafico": "Multi Serie Chart",
    "min_value": "1",
    "max_value": "1",
    "min_strategy": "2",
    "max_strategy": "3",
    "mutation": "4",
    "cxpb": "5",
    "mutpb": "6",
    "value_tournSize": "7",
    "pop_size": "100"
}