1

I have a JSON file without a key for the id-values of every object inside. I do not know how to access every single value without the key-name for the id´s.

How can I add a key-name to these values in react? Or is there another way to access them? The first 5 chars of the id are always the same.

example.json:

{
    "-KxhTabcdefgh": {
        "name": "Alpha",
        "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
        "logo": "http://www.example.com/img/08f6.png",
        "location": {
            "lat": 53.5,
            "long": 10.0
        }
    },
    "-KxhTstuvwxyz": {
        "name": "Beta",
        "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
        "logo": "http://www.example.com/img/f782.png",
        "location": {
            "lat": 53.0,
            "long": 10.0
        }
    },
}

app.js:

import React, { Component } from 'react'
import './index.css'
import Example from '../src/components/example/example'
import data from './example.json';


class App extends Component {
  constructor(props)
  {
    super(props);
    this.state={
      data:[data]

    }
  };

render() {


    return (
        <div className = "App">
        {this.state.data.map((exam, index) => {
          return <Example 
                    name={exam.name} 
                    logo={exam.logo} 
                    description={exam.description}/>
        })}        
        </div>
    );
  }
}

console.log(data)
export default App;

1 Answer 1

2

You can use Object.keys to get an array with all the keys in the object, and then map over the keys.

Example

const data = {
  "-KxhTabcdefgh": {
    name: "Alpha",
    description: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
    logo: "http://www.example.com/img/08f6.png",
    location: {
      lat: 53.5,
      long: 10.0
    }
  },
  "-KxhTstuvwxyz": {
    name: "Beta",
    description: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
    logo: "http://www.example.com/img/f782.png",
    location: {
      lat: 53.0,
      long: 10.0
    }
  }
};

class App extends React.Component {
  state = {
    data
  };

  render() {
    const { data } = this.state;

    return (
      <div>
        {Object.keys(data).map(key => {
          const exam = data[key];
          return (
            <div key={key}>
              <div>{exam.name}</div>
              <div>{exam.logo}</div>
              <div>{exam.description}</div>
            </div>
          );
        })}
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.