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


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

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

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

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #15 : 17 Февраль 2017, 09: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

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

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

Оффлайн lexasub

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

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

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4095
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #18 : 18 Февраль 2017, 21: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, 21: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

  • Старожил
  • *
  • Сообщений: 4095
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #20 : 20 Февраль 2017, 17:20:50 »
К примеру так
Код: Go
  1. package main
  2.  
  3. import "encoding/json"
  4. import "fmt"
  5.  
  6. type Users struct {
  7.         Users []User `json:"response"`
  8. }
  9.  
  10. type User struct {
  11.         ID int64 `json:"id,omitempty"`
  12.         FirstName string `json:"first_name"`
  13.         LastName  string `json:"last_name"`
  14.         Photo100 string `json:"photo_100"`
  15. }
  16.  
  17. type Response struct {
  18.         LengthValue Length `json:"response"`
  19. }
  20.  
  21. type Length struct {
  22.         Count int64 `json:"count"`
  23.         Items []int64 `json:"items"`
  24. }
  25.  
  26. func main() {
  27.         byt := []byte(`{
  28. "response": [{
  29. "id": 1,
  30. "first_name": "Pavel",
  31. "last_name": "Durov",
  32. "photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
  33. }, {
  34. "id": 2,
  35. "first_name": "Alexandra",
  36. "last_name": "Vladimirova",
  37. "photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
  38. }]
  39. }`)
  40.         var usr Users
  41.         if err := json.Unmarshal(byt, &usr); err != nil {
  42.                 panic(err)
  43.         }
  44.         byt = []byte(`{
  45. "response": {
  46. "count": 724,
  47. "items": [3841194, 46]
  48. }
  49. }`)
  50.         var res Response
  51.         if err := json.Unmarshal(byt, &res); err != nil {
  52.                 panic(err)
  53.         }
  54.         fmt.Println(usr, res)
  55. }
  56.  
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #21 : 22 Февраль 2017, 16:59:30 »
К примеру так
Код: Go
  1. package main
  2.  
  3. import "encoding/json"
  4. import "fmt"
  5.  
  6. type Users struct {
  7.         Users []User `json:"response"`
  8. }
  9.  
  10. type User struct {
  11.         ID int64 `json:"id,omitempty"`
  12.         FirstName string `json:"first_name"`
  13.         LastName  string `json:"last_name"`
  14.         Photo100 string `json:"photo_100"`
  15. }
  16.  
  17. type Response struct {
  18.         LengthValue Length `json:"response"`
  19. }
  20.  
  21. type Length struct {
  22.         Count int64 `json:"count"`
  23.         Items []int64 `json:"items"`
  24. }
  25.  
  26. func main() {
  27.         byt := []byte(`{
  28. "response": [{
  29. "id": 1,
  30. "first_name": "Pavel",
  31. "last_name": "Durov",
  32. "photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
  33. }, {
  34. "id": 2,
  35. "first_name": "Alexandra",
  36. "last_name": "Vladimirova",
  37. "photo_100": "https://pp.vk.me/...846/sc1FPdEM41s.jpg"
  38. }]
  39. }`)
  40.         var usr Users
  41.         if err := json.Unmarshal(byt, &usr); err != nil {
  42.                 panic(err)
  43.         }
  44.         byt = []byte(`{
  45. "response": {
  46. "count": 724,
  47. "items": [3841194, 46]
  48. }
  49. }`)
  50.         var res Response
  51.         if err := json.Unmarshal(byt, &res); err != nil {
  52.                 panic(err)
  53.         }
  54.         fmt.Println(usr, res)
  55. }
  56.  
Спасибо вам огромное, попробую. Всех с наступающим

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

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

Оффлайн alsoijw

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

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

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

Оффлайн lexasub

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

Оффлайн alsoijw

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

Оффлайн lexasub

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

Оффлайн alsoijw

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

Оффлайн lexasub

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

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

 

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