Pertanyaan Buat string json dalam tujuan C


Saya harus menghasilkan string json secara dinamis dan perlu mengirim ke server. Adakah yang tahu cara menggunakannya NSJSONSerialization . Di bawah ini adalah string saya

{
    "surveyid": "Survey1",
    "responsetime": "dd/mm/yyyy hh:mm:ss",
    "location": null,
    "surveyresponses": [
        {
            "questionid": "111",
            "responses": [
                {
                    "response": "Good",
                    "optionid": 1,
                    "language": "en"
                }
            ]
        },
        {
            "questionid": "112",
            "responses": [
                {
                    "response": "bad",
                    "optionid": 2,
                    "language": "en"
                }
            ]
        }

    ]
}

Bagaimana cara membuat string.json, Tolong bantu jika ada yang tahu. Terima kasih sebelumnya.


5
2018-03-20 06:33


asal


Jawaban:


saya sangat setuju dengan @Apurv, sebenarnya @Paras Joshi memberikan jawaban yang sebenarnya untuk pertanyaan Anda ... (cara mengirim)

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
[dict setValue:@"Survey1" forKey:@"surveyid"];
[dict setValue:@"responsetime" forKey:@"dd/mm/yyyy hh:mm:ss"];
.
.
.

dan kemudian sebuah array forKey @"surveyresponses"... di dalamnya lagi buat kamus ... bla..bla

Harap jelaskan terlebih dahulu apa yang sebenarnya Anda inginkan ... Cara mengirim string JSON / cara menghasilkan nilai JSON.

belajar menerima jawaban dan menganalisis jawaban dengan sempurna, dan membuat pertanyaan Anda jelas.


3
2018-03-20 07:35



cukup atur kamus untuk Data dengan objek JSON seperti di bawah ini

NSError *err;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:yourDataDictionary options:NSJSONWritingPrettyPrinted error:&err];

NSLog(@"JSON = %@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

Lihat juga tautan ini mengirim-string-as-json-object

semoga ini bermanfaat untukmu ..


3
2018-03-20 06:48



Jika Anda sudah memiliki string JSON, Anda dapat menggunakannya secara langsung.

Jika Anda memiliki objek (array dan kamus) dan jika Anda ingin mengubahnya menjadi string json, gunakan metode di bawah ini NSJSONSerialization.

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
[dict setValue:@"Survey1" forKey:@"surveyid"];
//Add rest of the details in the dictionary

//Pass the dict in below method
    + (NSData *)dataWithJSONObject:(id)dict options:(NSJSONWritingOptions)opt error:(NSError **)error

Sekarang, gunakan data di atas untuk membuat objek string.


1
2018-03-20 06:42



Coba ini: jika ada lebih dari satu item maka letakkan (str =) dalam loop

    NSString *str = [NSString stringWithFormat:@"json_data={\"data\":["];

    str = [str stringByAppendingString:[NSString stringWithFormat:@"{\"type\":\"%@\",\"surveyid\":\"%@\",\"veriety\":\"%@\",\"responsetime\":\"%@\",\"rate\":\"%@\",\"seeddepth\":\"%@\",\"groundspeed\":\"%@\",\"note\":\"%@\",\"AnhRate\":\"%@\",\"AnhVarRate\":\"%@\",\"WetRate\":\"%@\",\"WetVarRate\":\"%@\",\"WetType\":\"%@\",\"DryRate\":\"%@\",\"DryVarRate\":\"%@\",\"DryType\":\"%@\",\"MicroRate\":\"%@\",\"MicroVarRate\":\"%@\",\"MicroType\":\"%@\",\"NoteApp\":\"%@\",\"userid\":\"%@\",\"flid\":\"%d\",\"catid\":\"%d\",\"subcatId\":\"%d\",\"categoryname\":\"%@\",\"subcategoryname\":\"%@\",\"activitydate\":\"%@\",\"DateCreated\":\"%@\",\"DateUpdated\":\"%@\"},",Your variable

    if ([str length] > 0) {
            str =[str substringToIndex:[str length] - 1];
    }

str = [str stringByAppendingString:@"]}"];

1
2018-03-20 07:27



Contoh kode untuk menghasilkan Json String:

 NSString *strdata =[NSString stringWithFormat:@"&data={\"user_id\":\"%@\",\"auth_token\":\"%@\",\"coupon_id\":\"%@\",\"rest_name\":\"%@\",\"name\":\"%@\",\"description\":\"%@\",\"condition\":\"%@\",\"coupon_code\":\"%@\",\"parent_menu_item\":\"%@\",\"discount_item\":\"%@\",\"discount_pecent\":\"%@\",\"start_date\":\"%@\",\"end_date\":\"%@\",\"status\":\"%@\"}",userid,auth_token,couponid,restuserid,txtCoupannm.text,txtvwCoupandesc.text,txtvwcoupancond.text,couponcode,appDelegate.tempparentmenuId,appDelegate.tempdiscountitemId,txtPercent.text,startdate.text,enddate.text,@"1"];

1
2018-03-20 06:58



Saya harus membangun sesuatu yang serupa dan menerapkan apa yang saya lakukan pada string Anda - ini mungkin bukan cara terbaik untuk mencapai hasil, tetapi itu berhasil bagi saya. Untuk rangkaian respons survei dalam (dalam kasus saya itu adalah array yang berbeda), saya hanya merantai beberapa bersama-sama.

NSString *ts=@"2015-04-03T13:00:00";
    NSString *outer = [NSString stringWithFormat: @"{\"surveyId\":\"Survey1\", \"responsetime\":\"%@\", \"location\":\"%@\", \"surveyresponses\":[{\"", ts, @"null"];


    NSString * surveyresponse = [NSString stringWithFormat: @"questionid\":\"111\", \"responses\":[{\"response\":\"good\", \"optionid\":\%d\, \"language\":\"en\"}]", 1];

    NSString *ending = @"}]}";

    NSString *jsonStr = [NSString stringWithFormat:@"%@%@%@", outer, surveyresponse, ending];

    NSData * postdata = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];

    NSError * error = nil;
    id json = [NSJSONSerialization JSONObjectWithData:postdata options:0 error:&error];

    if (!json) {
        // handle error
        NSLog(@"json string error - %@", error.description);
    }
    NSLog(@"%@",[[NSString alloc] initWithData:postdata encoding:NSUTF8StringEncoding]);

1
2017-09-21 13:40



Dengan asumsi bahwa Anda sudah memiliki JSON dalam NSString, Anda dapat menyimpannya ke file dengan memanggil:

[jsonString writeToFile:@"/path/to/JSON.json" atomically:YES encoding:NSASCIIStringEncoding error:nil]

Dokumentasi untuk fungsi ini sini.


0
2018-03-20 06:40