访问json数据上的字段。反应本地

时间:2018-09-21 06:47:43

标签: react-native

如何在“ course_details”中访问“ courseDesc”。我正在使用laravel作为后端制作一个React Native应用程序。我已经做了大量研究,几乎可以正常工作,但是在我的本机代码中收到JSON Parse错误Unrecognize令牌'<'。

[
{
  id: 61987,
  active_lesson: "1",
  start_date: "2018-05-09",
  due_date: "2018-05-23",
  grade: "Fail",
  created_at: "2018-05-09 12:59:47",
  updated_at: "2018-09-19 07:12:40",
  course_details: {
    id: 573,
    company_id: null,
    courseDesc: null,
    questionDisplay: "single",
  }
},
{
  id: 61988,
  active_lesson: "1",
  start_date: "2018-05-09",
  due_date: "2018-05-23",
  grade: "Not Yet Taken",
  created_at: "2018-05-09 12:59:47",
  updated_at: "2018-05-09 12:59:47",
  course_details: null
},....

这是我的反应本机代码:

fetchData = async () => {
    const response = await fetch('http://localhost/elearning/public/api/courses');
    const json = await response.json();
    this.setState({data: json.course_details});
}

render() {

    return (
        <View style={styles.container}>
            <FlatList
                data={this.state.data}
                keyExtractor={(x, i) => i}
                renderItem={({ item }) =>
                    <Text>
                        {'${item.courseDesc}'}
                    </Text>}
            />
        </View>
        );

  }

这是我的PHP代码:

echo $result->toJson(JSON_PRETTY_PRINT);

已经2天了,我真的需要帮助。我保证会帮助stackoverflow并回馈新的程序员。

enter image description here

1 个答案:

答案 0 :(得分:1)

您的后端提供了一个嵌套的对象文字,而不是有效的json对象。

这是有关序列化的laravel文章-> Link

您需要实现的是获取有效的json,例如:

{
    "id": "61987",
    "active_lesson": "1",
    "start_date": "2018-05-09",
    "due_date": "2018-05-23",
    "grade": "Fail",
    "created_at": "2018-05-09 12:59:47",
    "updated_at": "2018-09-19 07:12:40",
    "course_details": {
    "id": 573,
    "company_id": null,
    "courseDesc": null,
    "questionDisplay": "single"
    }
}

根据草稿-> link,您可以使用任何在线验证器来检查对象的有效性。

我还建议您仔细研究JSON.stringify方法。

从W3C:

  

JSON.stringify()方法将JavaScript值转换为JSON字符串,如果指定了replacer函数,则可以选择替换值,如果指定了replacer数组,则可以仅包括指定的属性。

考虑在php后端中使用json_encode()method

toJson信息:

  

Json Serializer for PHP。这是一个以JSON格式序列化PHP变量的库。它与PHP中的serialize()函数类似,但输出为JSON编码的字符串。您还可以反序列化此工具生成的JSON,并获取PHP内容。

关于如何在您的php后端中处理Json的问题,article很不错-也许值得一读。

编辑:

可能是您的请求返回的是HTML而不是JSON,而当您尝试解析它时,第一个字符将是<,对于JSON字符串已经无效。