it-swarm.com.de

Konvertieren der JSON-Zeichenfolge in die Liste der nicht aufgelisteten Wörter

Ich versuche, eine JSON-Datei zu übergeben und die Daten in ein Wörterbuch zu konvertieren.

Bisher habe ich Folgendes getan:

import json
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)

Ich erwarte, dass json1_data ein dict -Typ ist, aber er wird tatsächlich als list -Typ ausgegeben, wenn ich ihn mit type(json1_data) überprüfe.

Was vermisse ich? Ich brauche dieses Wörterbuch, damit ich auf einen der Schlüssel zugreifen kann.

179
lawchit

Ihr JSON ist ein Array mit einem einzelnen Objekt. Wenn Sie es also einlesen, erhalten Sie eine Liste mit einem darin enthaltenen Wörterbuch. Sie können auf Ihr Wörterbuch zugreifen, indem Sie auf Element 0 in der Liste zugreifen, wie unten gezeigt:

json1_data = json.loads(json1_str)[0]

Jetzt können Sie wie erwartet auf die in Datenpunkten gespeicherten Daten zugreifen:

datapoints = json1_data['datapoints']

Ich habe noch eine Frage, wenn jemand beißen kann: Ich versuche, den Durchschnitt der ersten Elemente in diesen Datenpunkten zu ermitteln (d. H. Datenpunkte [0] [0]). Um sie aufzulisten, habe ich versucht, Datenpunkte [0: 5] [0] zu erstellen, aber alles, was ich erhalte, ist der erste Datenpunkt mit beiden Elementen, anstatt die ersten 5 Datenpunkte zu erhalten, die nur das erste Element enthalten. Gibt es eine Möglichkeit, dies zu tun?

datapoints[0:5][0] macht nicht das, was Sie erwarten. datapoints[0:5] gibt einen neuen Listenausschnitt zurück, der nur die ersten 5 Elemente enthält. Wenn Sie dann [0] am Ende hinzufügen, wird nur das erste Element aus dem resultierenden Listenausschnitt übernommen . Was Sie verwenden müssen, um das gewünschte Ergebnis zu erhalten, ist ein Listenverständnis :

[p[0] for p in datapoints[0:5]]

Hier ist eine einfache Methode, um den Mittelwert zu berechnen:

sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8

Wenn Sie bereit sind, NumPy zu installieren, ist es noch einfacher:

import numpy
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)[0]
datapoints = numpy.array(json1_data['datapoints'])
avg = datapoints[0:5,0].mean()
# avg is now 35.8

Die Verwendung des Operators , mit der Slicing-Syntax für NumPys Arrays hat das Verhalten, das Sie ursprünglich bei den Listenschnitten erwartet hatten.

234
DaoWen

Hier ist ein einfaches Snippet, das in einer json Textdatei aus einem Wörterbuch gelesen wird. Beachten Sie, dass Ihre JSON-Datei dem JSON-Standard entsprechen muss und daher " doppelte Anführungszeichen anstelle von ' einfachen Anführungszeichen enthalten muss.

Ihre JSON-dump.txt-Datei:

{"test":"1", "test2":123}

Python-Skript:

import json
with open('/your/path/to/a/dict/dump.txt') as handle:
    dictdump = json.loads(handle.read())
10
user1767754

Sie können Folgendes verwenden:

import json

 with open('<yourFile>.json', 'r') as JSON:
       json_dict = json.load(JSON)

 # Now you can use it like dictionary
 # For example:

 print(json_dict["username"])
4
userguest

Der beste Weg, JSON-Daten in das Wörterbuch zu laden, ist, dass Sie den eingebauten JSON-Loader verwenden können.

nten ist das Beispiel-Snippet, das verwendet werden kann.

import json
f = open("data.json")
data = json.load(f))
f.close()
type(data)
print(data[<keyFromTheJsonFile>])
3
Sampat Kumar

übergeben Sie die Daten mit Javascript Ajax von Get-Methoden

    **//javascript function    
    function addnewcustomer(){ 
    //This function run when button click
    //get the value from input box using getElementById
            var new_cust_name = document.getElementById("new_customer").value;
            var new_cust_cont = document.getElementById("new_contact_number").value;
            var new_cust_email = document.getElementById("new_email").value;
            var new_cust_gender = document.getElementById("new_gender").value;
            var new_cust_cityname = document.getElementById("new_cityname").value;
            var new_cust_pincode = document.getElementById("new_pincode").value;
            var new_cust_state = document.getElementById("new_state").value;
            var new_cust_contry = document.getElementById("new_contry").value;
    //create json or if we know python that is call dictionary.        
    var data = {"cust_name":new_cust_name, "cust_cont":new_cust_cont, "cust_email":new_cust_email, "cust_gender":new_cust_gender, "cust_cityname":new_cust_cityname, "cust_pincode":new_cust_pincode, "cust_state":new_cust_state, "cust_contry":new_cust_contry};
    //apply stringfy method on json
            data = JSON.stringify(data);
    //insert data into database using javascript ajax
            var send_data = new XMLHttpRequest();
            send_data.open("GET", "http://localhost:8000/invoice_system/addnewcustomer/?customerinfo="+data,true);
            send_data.send();

            send_data.onreadystatechange = function(){
              if(send_data.readyState==4 && send_data.status==200){
                alert(send_data.responseText);
              }
            }
          }

Django Ansichten

    def addNewCustomer(request):
    #if method is get then condition is true and controller check the further line
        if request.method == "GET":
    #this line catch the json from the javascript ajax.
            cust_info = request.GET.get("customerinfo")
    #fill the value in variable which is coming from ajax.
    #it is a json so first we will get the value from using json.loads method.
    #cust_name is a key which is pass by javascript json. 
    #as we know json is a key value pair. the cust_name is a key which pass by javascript json
            cust_name = json.loads(cust_info)['cust_name']
            cust_cont = json.loads(cust_info)['cust_cont']
            cust_email = json.loads(cust_info)['cust_email']
            cust_gender = json.loads(cust_info)['cust_gender']
            cust_cityname = json.loads(cust_info)['cust_cityname']
            cust_pincode = json.loads(cust_info)['cust_pincode']
            cust_state = json.loads(cust_info)['cust_state']
            cust_contry = json.loads(cust_info)['cust_contry']
    #it print the value of cust_name variable on server
            print(cust_name)
            print(cust_cont)
            print(cust_email)
            print(cust_gender)
            print(cust_cityname)
            print(cust_pincode)
            print(cust_state)
            print(cust_contry)
            return HttpResponse("Yes I am reach here.")**
0
Mohit Mishra