Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: PHP. Асинхронный скрипт.  (Прочитано 3823 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #15 : 17 Февраля 2017, 08:48:57 »
помогите мне написать структуры для приема:
1)
{
"response": [{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}]
}
2)
{
"response": {
"count": 724,
"items": [3841194, 46]
}
}

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #16 : 17 Февраля 2017, 18:45:03 »
lexasub, а в чём проблема? http://stackoverflow.com/questions/29325956/parsing-a-json-array-of-json-objects-in-golang

Пользователь добавил сообщение 17 Февраля 2017, 18:57:26:
имхо самое главное не всё знать, а уметь искать. То с чем ты сейчас разбираешься прекрасно исчется по запросу "golang json array"
« Последнее редактирование: 17 Февраля 2017, 18:57:26 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #17 : 18 Февраля 2017, 11:40:29 »
lexasub, а в чём проблема? http://stackoverflow.com/questions/29325956/parsing-a-json-array-of-json-objects-in-golang

Пользователь добавил сообщение 17 Февраля 2017, 18:57:26:
имхо самое главное не всё знать, а уметь искать. То с чем ты сейчас разбираешься прекрасно исчется по запросу "golang json array"
Извиняюсь за "продолжение темы", но для меня это очень сложно. Я не понимаю, какие структуры написать для парсинга вышенаписанных результатов

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #18 : 18 Февраля 2017, 20:25:23 »
lexasub, это ты привёл скажем так начиная с корня? То есть перед этими фрагментами нет открыающих скобок? В первом случаях у тебя есть массив ответов. Для этого используем структуру типа(я цитирую последнюю ссылку). Вторая будет похожа за тем исключением что там должен быть один объект а не массив. Разумеется что тип структуры для первого примера отличен от второго.type MsgCreateUserArray struct {
         CreateUser []MsgCreateUserJson `json:"createUserArray"`
    }
Таким образом у нас хранится всё что помечено зелёным.
1)
{
"response": [
{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}]
}

2)
{
"response": {

"count": 724,
"items": [3841194, 46]
}
}
Теперь надо определить структуру для хранения отдельных пользователей.
1)
{
"response": [
{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}
, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}
]
}

2)
{
"response": {

"count": 724,
"items": [3841194, 46]
}
}
У структуры будет четыре поля - идентификатор(возможно подойдёт простой int может нужен int64, не уверен)? три строки строки. Именно из этих структур должен быть массив в предыдущей структуре для ответа.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #19 : 18 Февраля 2017, 20:51:59 »
lexasub, это ты привёл скажем так начиная с корня? То есть перед этими фрагментами нет открыающих скобок? В первом случаях у тебя есть массив ответов. Для этого используем структуру типа(я цитирую последнюю ссылку). Вторая будет похожа за тем исключением что там должен быть один объект а не массив. Разумеется что тип структуры для первого примера отличен от второго.type MsgCreateUserArray struct {
         CreateUser []MsgCreateUserJson `json:"createUserArray"`
    }
Таким образом у нас хранится всё что помечено зелёным.
1)
{
"response": [
{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}]
}

2)
{
"response": {

"count": 724,
"items": [3841194, 46]
}
}
Теперь надо определить структуру для хранения отдельных пользователей.
1)
{
"response": [
{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}
, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}
]
}

2)
{
"response": {

"count": 724,
"items": [3841194, 46]
}
}
У структуры будет четыре поля - идентификатор(возможно подойдёт простой int может нужен int64, не уверен)? три строки строки. Именно из этих структур должен быть массив в предыдущей структуре для ответа.
Я опять не понял. что мне надо до этой строчки сделать(мне нужен код)
json.Unmarshal(get_content("https://api.vk.com/method/users.get"+params),&users)//первый запрос
и до этой:
json.Unmarshal(get_content("https://api.vk.com/method/friends.get?user_id="+strconv.FormatInt(*id,10)),&friends)

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #20 : 20 Февраля 2017, 16:20:50 »
К примеру так
Код: (go) [Выделить]
package main

import "encoding/json"
import "fmt"

type Users struct {
Users []User `json:"response"`
}

type User struct {
ID int64 `json:"id,omitempty"`
FirstName string `json:"first_name"`
LastName  string `json:"last_name"`
Photo100 string `json:"photo_100"`
}

type Response struct {
LengthValue Length `json:"response"`
}

type Length struct {
Count int64 `json:"count"`
Items []int64 `json:"items"`
}

func main() {
byt := []byte(`{
"response": [{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}]
}`)
var usr Users
if err := json.Unmarshal(byt, &usr); err != nil {
panic(err)
}
byt = []byte(`{
"response": {
"count": 724,
"items": [3841194, 46]
}
}`)
var res Response
if err := json.Unmarshal(byt, &res); err != nil {
panic(err)
}
fmt.Println(usr, res)
}
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #21 : 22 Февраля 2017, 15:59:30 »
К примеру так
Код: (go) [Выделить]
package main

import "encoding/json"
import "fmt"

type Users struct {
Users []User `json:"response"`
}

type User struct {
ID int64 `json:"id,omitempty"`
FirstName string `json:"first_name"`
LastName  string `json:"last_name"`
Photo100 string `json:"photo_100"`
}

type Response struct {
LengthValue Length `json:"response"`
}

type Length struct {
Count int64 `json:"count"`
Items []int64 `json:"items"`
}

func main() {
byt := []byte(`{
"response": [{
"id": 1,
"first_name": "Pavel",
"last_name": "Durov",
"photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}, {
"id": 2,
"first_name": "Alexandra",
"last_name": "Vladimirova",
"photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
}]
}`)
var usr Users
if err := json.Unmarshal(byt, &usr); err != nil {
panic(err)
}
byt = []byte(`{
"response": {
"count": 724,
"items": [3841194, 46]
}
}`)
var res Response
if err := json.Unmarshal(byt, &res); err != nil {
panic(err)
}
fmt.Println(usr, res)
}
Спасибо вам огромное, попробую. Всех с наступающим

Пользователь добавил сообщение 22 Февраля 2017, 16:14:07:
code:
(Нажмите, чтобы показать/скрыть)
errors:
(Нажмите, чтобы показать/скрыть)

« Последнее редактирование: 22 Февраля 2017, 16:15:57 от lexasub »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #22 : 22 Февраля 2017, 19:19:48 »
lexasub, у тебя не верно описан its. Во-первых нужно указывать тип возвращаемого значения, во-вторых эта функция принимает 2 аргумента. Второй указывает в какой системе(к примеру десятичной, шестнадцатиричной) выводить текст. Если в десятичной, то тогда выглядеть будет так. В-третьих ты напрасно закоментировал импорт strconv
Код: (golang) [Выделить]
func its(s int64) string {
return strconv.FormatInt(s, 10)
}

Пользователь добавил сообщение 22 Февраля 2017, 19:22:18:
Не игнорируй обработку ошибок. Если в данный момент обрабока не нужна, то заменяй err на _.

Пользователь добавил сообщение 22 Февраля 2017, 19:44:48:
имхо нет смысла в функции которая возвращает значение другой функции.
« Последнее редактирование: 22 Февраля 2017, 19:44:48 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #23 : 22 Февраля 2017, 21:15:10 »
код(переделал):
(Нажмите, чтобы показать/скрыть)
error:
(Нажмите, чтобы показать/скрыть)

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #24 : 22 Февраля 2017, 22:22:31 »
lexasub, зачем ты всё прячешь под спойлер? Как я уже говорил тебе ты не обрабатываешь ошибки. Из за этого и возникает проблема. Воспользуйся отладчиком и посмотри где возникает ошибка. В качестве спойлера: поставь точку останова на array_keys и посмотри что она возвращает.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #25 : 23 Февраля 2017, 08:09:04 »
я пользуюсь sublime-мом, я незнаю как там точку останова можно поставить

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #26 : 23 Февраля 2017, 14:58:50 »
https://habrahabr.ru/post/179317/
в среде программистов есть шутка про отладку println(в случае с go). Это заключается в том что вывести на печать значение какой-то переменной. К примеру вставь перед return fmt.Println(array_keys)
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #27 : 23 Февраля 2017, 15:53:10 »
я забил на go

Пользователь добавил сообщение 23 Февраля 2017, 15:53:48:
я забил на go

 

Страница сгенерирована за 0.071 секунд. Запросов: 25.