Javascript RN Listview将每个字符作为给定json字符串的一行

Javascript RN Listview将每个字符作为给定json字符串的一行,javascript,android,reactjs,listview,react-native,Javascript,Android,Reactjs,Listview,React Native,我在其他项目中使用过Listview,只是从那里复制了代码,但现在有一个问题我不知道如何解决 我从服务器获取了以下json,并将其存储在我的会话类中,我将其用作数据源,但渲染行不将对象作为行项目,而是将每个字符作为新行项目,我在调试过程中已对其进行了检查。使用以下代码,任何帮助都将不胜感激 JSON 代码 构造函数(道具){ 超级(道具); const ds=new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2}); var功能成员; i

我在其他项目中使用过Listview,只是从那里复制了代码,但现在有一个问题我不知道如何解决

我从服务器获取了以下json,并将其存储在我的会话类中,我将其用作数据源,但渲染行不将对象作为行项目,而是将每个字符作为新行项目,我在调试过程中已对其进行了检查。使用以下代码,任何帮助都将不胜感激

JSON

代码

构造函数(道具){
超级(道具);
const ds=new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2});
var功能成员;
if(SessionManager.getSessionValue(Constants.FACULTY_MEMBERS)!==null){
facultyMembers=SessionManager.getSessionValue(Constants.FACULTY\u MEMBERS);
}
此.state={
数据源:ds.cloneWithRows(facultyMembers)
};
}
render(){
返回(
this.renderRow(行)}
renderHeader={this.state.showHeader?()=>this.renderHeader(this.state.headerText):()=>{
}}
RenderParator={(sectionId,rowId)=>}
/>
);
}
renderRow=(行数据)=>(
{
this.state.onPress(rowData)
}}>
{rowData.fullName}
);
在renderRow的第一次迭代中,我得到了
[
在第二秒钟,我得到了
{
在第三节中,我得到了
等等

根据@MattAft和@Garrett McCullough的说法,我没有将字符串解析回JSON,因为我希望我已经得到了JSON

因此,这个简单的解决方案是有效的

ds.cloneWithRows(JSON.parse(facultyMembers))

将字符串传递到
cloneWithRows
将导致该问题。您确定解析了来自服务器的JSON响应吗?是的,我从服务器获得了有效的JSON,在收到响应后,我重新检查并应用了resp.JSON(),我同意@GarrettMcCullough的说法,您可能只需要执行
数据源:ds.cloneWithRows(JSON.parse(facultyMembers))
在你的州。ohh是的Thnx很多先生你们两个,我想我不明白到底发生了什么,我得到的字符串不是JSON吗?在服务器端,我使用objectmapper.writeValueAsString(hashmap)…如果您能在@MattAftThe函数名下对其进行lil bit解释,
writeValueAsString
发出的声音听起来像是服务器在发送字符串。ListView的结果看起来像是得到了一个字符串。因此,我会说要么您没有将字符串解析为JSON,要么您没有存储JSON,而是错误地存储了字符串。我如果不知道SessionManager.getSessionValue正在做什么,就很难知道。我找不到该库/函数,所以我猜它是自定义的
 constructor(props) {
          super(props);

            const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
            var facultyMembers;
            if(SessionManager.getSessionValue(Constants.FACULTY_MEMBERS) !== null){
                facultyMembers = SessionManager.getSessionValue(Constants.FACULTY_MEMBERS);
            }
            this.state = {
                 dataSource: ds.cloneWithRows(facultyMembers)
              };
          }


 render() {
        return (
            <View style={styles.container}>
                <ListView
                    style={styles.listviewcontainer}
                    dataSource={this.state.dataSource}
                    renderRow={(row) => this.renderRow(row)}
                    renderHeader={this.state.showHeader ? () => this.renderHeader(this.state.headerText) : () => {
                    }}
                    renderSeparator={(sectionId, rowId) => <View key={rowId} style={styles.separator}/>}
                />
            </View>
        );
    }

renderRow = (rowData) => (
        <TouchableHighlight underlayColor='gainsboro' onPress={() => {
            this.state.onPress(rowData)
        }}>
            <View style={styles.row}>
                <Text style={styles.header}>
                    {rowData.fullName}
                </Text>
            </View>
        </TouchableHighlight>
    );
ds.cloneWithRows(JSON.parse(facultyMembers))